------- Additional Comments From jkanze at cheuvreux dot com  2005-01-05 14:29 
-------
The context of the quote from the standard is:
"If the constructor of the most derived class does not
specify a mem-initializer for the virtual base class
V ...".  In the code submitted, the constructor of the
most derived class DOES specify a mem-initializer, so
none of what follows applies.

I think that there is a bit of history at play here.
All compilers I know reject the code, I suspect because
CFront rejected it, and nobody noticed that CFront was
in error here.

Note that the absence of a default initializer, when
it is required, is undefined behavior, so a trivial fix
would be to replace the call to the (non-existing)
constructor in the in-charge constructor with a call
to a function which displays an error message and calls
abort.  A better fix would be to not generate the in-charge
constructor at all, resulting in a linker error if the class
was ever instantiated.  (Not possible here, since the class is
abstract, but possible in the more general case.)

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19249

Reply via email to