first и second это dependent names. Для dependent names правила lookup при name resolution имеют нюансы. (См. об этом в священных книгах п. 14.6.2/3). В частности, если базовый класс зависит от параметров темплейта (а в данном примере он зависит), то unqualified name в теле наследника не будет по умолчанию разыскиваться в базовом классе.

Как уже отметили некоторые постеры, многие компалеры по доброте душевной ослабляют это требование и находят имя, даже если оно в базовом классе. Но по Стандарту требуется fully qualified имя. Пример из 14.6.2/3:
typedef double A;
template<class T> class B {
    typedef int A;
};

template<class T> struct X : B<T> {
    A a;  // a has type double
};

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

trurle: (Default)
trurle

January 2017

S M T W T F S
1234 5 6 7
89 101112 13 14
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 23rd, 2025 12:57 pm
Powered by Dreamwidth Studios