Re: One more foolishness of the C++ Standard
If you will make it explicit you get another problem with declaring objects.
For example you can not write
A a;
B b = a;
And even you do not bother about this restriction adding template
constructor will destroy your set of operators.
Vladimir Grigoriev
"Ulrich Eckhardt" <eckhardt@satorlaser.com> wrote in message
news:sth037-orl.ln1@satorlaser.homedns.org...
Vladimir Grigoriev wrote:
Ulrich, I forgot to add that in the derived class the constructor for the
base class must be.
B( const A & );
In this case two conversions can be: B ==> A and A ==> B and an ambiguous
reference can occur.
Make it explicit, or maybe don't use public derivation.
Think of this:
b some_b;
a& a_ref = some_b;
a_ref+a_ref; // now what?
struct c: b {...};
c some_c;
b& b_ref = some_c;
b_ref+b_ref; // and here?
Did you think about those cases? How should those two cases behave?
Again, please don't quote anything up to the signature, it's rude and it
makes communication much harder, as people have to guess what you're
referring to. Thank you.
Uli
--
C++ FAQ: http://parashift.com/c++-faq-lite
Sator Laser GmbH
Geschaftsfuhrer: Thorsten Focking, Amtsgericht Hamburg HR B62 932