Topic: Two user defined convertations?


Author: einwegadresse@gmx.de (Immanuel Scholz)
Date: Wed, 12 May 2004 17:15:19 +0000 (UTC)
Raw View
Given the following code:

struct source {};
struct hop {
  hop(source) {}
};
struct destination {
  destination(hop) {}
};

destination foo() {
  return source();
}

I thought function foo may not return a source-class directly, since
this would involve more than one user defined convertation
(source->hop->destination) and this is explicit forbidden by the
standard? (At least to make function calls valid?)

Well, suprisly, it works on some of my tested compilers (MSVC, Digital
Mars C++) while it don't work on others (gcc).

What says the standard about it? May I use more than one conversation
in return values and even claim standard conformity?

Ciao, Imi.


PS:
At least

void bar(destination) {}
..
  bar( source() );

did not compile on any compiler I tested - as suspected.

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]