------- Comment #4 from mmitchel at gcc dot gnu dot org 2006-07-20 03:59
-------
I do not believe this is a bug. The problematic conversion is:
SdOptionsPrint &rOldUnconst = (SdOptionsPrint&)(rOther);
Here, rOther is declared as:
const SdOptionsPrintItem &rOther
and SdOptionsPrintItem is derived from SdOptionsPrint.
In the current WP, the first option for static_cast is casting an lvalue of
type cv1 B to cv2 D, where D is derived from B. This case does not apply; we
are casting from derived to base, not base to derived. The second option is a
converion as if:
SdOptionsPrint &t(rOther);
However, that conversion is not valid, as it casts aways const-ness.
(Therefore, the reference cannot be bound directly to the object referred to by
rOther, and since the reference is not to a const non-volatile type, we are not
allowed to create a temporary.) There are then several other options, none of
which apply.
Therefore, this case is in fact a reinterpret_cast.
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28357