This is the mail archive of the libstdc++@sourceware.cygnus.com mailing list for the libstdc++ project. See the libstdc++ home page for more information.
>>>>> "Jason" == Jason Merrill <jason@cygnus.com> writes: >>>>> Alexandre Oliva <oliva@dcc.unicamp.br> writes: >> On Nov 2, 1998, Jason Merrill <jason@cygnus.com> wrote: >>>>>>>> Alexandre Oliva <oliva@dcc.unicamp.br> writes: >>>> Within the scope of S<T>, `a', `S::a' and `S<T>::a' are all >>>> the same thing >>> Nope. S::a and S<T>::a are the same, but they are dependent, >>> and `a' is not. g++ doesn't currently implement that >>> consistently. >> The point I was trying to make is that they *should* be the >> same thing. Jason> And my point is that the standard says they aren't. Concretely, consider this: const int a = 7; template <class T> struct S : public T { int j [S<T>::a]; int k [a]; }; struct U { static const int a = 3; }; Now, in `S<U>', `S<U>::a' is 3 while `a' is 7. -- Mark Mitchell mark@markmitchell.com Mark Mitchell Consulting http://www.markmitchell.com