messages private members
Gabriel Dos Reis
gdr@integrable-solutions.net
Thu Oct 2 22:27:00 GMT 2003
Benjamin Kosnik <bkoz@redhat.com> writes:
| >--- config/locale/gnu/messages_members.h 2 Oct 2003 21:12:46 -0000
| >***************
| >*** 39,45 ****
| > : facet(__refs)
| > {
| > #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
| >! _M_name_messages = _S_c_name;
| > #endif
| > _M_c_locale_messages = _S_get_c_locale();
| > }
| >--- 39,45 ----
| > : facet(__refs)
| > {
| > #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
| >! _M_name_messages = _S_get_c_name();
| > ^^
| >
| >needs "messages<_CharT>::" to become dependent (still better,
| >"locale::facet::"), or else error.
|
| Agreed, locale::facet:: would be preferred, but I see no compilation
| error.
You should.
The reason is that if you do a name lookup for _S_get_c_name in the
above expression, then you can't see one. The only place you'll see
it is in the dependent base class messages<_CharT>, into which the
compiler should not look. Therefore you get an error.
| More to the point, why don't I see any of this? I rebuilt with
| today's CVS for gcc, and have configured the generic locale (verfied)
| which has this issue in time_members.h. No errors, successful
| compilation. Also, if you are having the above problem in
| messages_members.h and not time_members.h something is very wrong. What
| gives, again?
The reason the error does not appear in time_members.h is that
locale::facet is a NON-dependent base of __timepunct so usual name
lookup looks there and find it.
That is not the case for messages_byname<_CharT> which has the
dependent base class messages<_CharT>.
|
| Are you using today's CVS cc1plus?
Yes.
-- Gaby
More information about the Libstdc++
mailing list