在这种情况下,为什么我不能在x
案例中访问不合格的基类成员B1
?对我没有暧昧......
template<class T>
struct A { T x; };
template<class T>
struct B1 : A<T> { T f() { return A<T>::x; } };
struct B2 : A<int> { int f() { return x; } };
答案 0 :(得分:3)
因为x
不依赖,所以它会被查找
定义模板的上下文。在这种背景下,
编译器对T
一无所知,也无法查看依赖库
类。例如,在不知道A<T>
是什么的情况下,如何知道T
的任何内容。 (例如,可能有A
的专业化,但成员完全不同。)