const and conversion sequence
Martin v. Loewis
martin@mira.isdn.cs.tu-berlin.de
Sun Oct 31 23:03:00 GMT 1999
> It's a bit unclear to me why using the void* is better, since
> memcmp takes a const void* and a const void* operator is available.
Thanks for your bug report. This behaviour is mandated by the C++
standard; a conversion operator is "better" if the conversion
sequences for the arguments are "better". The argument is of type
"A&", the parameter type is "A&" in one case (requiring only identity
conversion), and "A const &" in the other case (requiring
qualification conversion).
> Previous versions of egcs (I've upgraded from a development version
> released sometime last fall) always chose the const operator by
> default, which was exactly what I wanted.
If you where using egcs 2.91.x, then it already did what it does now -
it only did not warn about that.
> If the current behaviour is correct, then is there another way to
> define the conversion rules for A, so that it can be used in both
> const and non-const contexts?
You can add a third operator
operator const void* (void) { return (m_Data); }
Or you can just ignore the warning - it is harmless.
Regards,
Martin
More information about the Gcc-bugs
mailing list