1. 为何 模板类继承模板类, 子类看不到父类成员
1.1 问题现象
template<typename>
struct B { int x; };
template<typename T>
struct X : B<T> {
void foo() { x = 0; }
};
1.2 问题原因
1. 对于一个非依赖型名称(不以任何方式依赖于模板参数的名称),在模板声明进行解析的时候就会进行查找
2. C++标准中规定(14.6.2 3),一个非受限的名称查找的时候将不会考虑依赖型的基类。
问题答案引自 知乎 https://www.zhihu.com/question/28139230 中Sunchy321的回答。