コードは次のとおりです。
template <typename T>
struct Outer {
struct InnerBase {
int n;
InnerBase() : n(42) { }
};
struct InnerChild : InnerBase {
int getN() { return n; }
};
};
そして、ここに問題があります:
In member function 'int Outer<T>::InnerChild::getN()':
error: 'n' was not declared in this scope
Outer
がテンプレートでない場合、すべて正常に動作します。どうして?テンプレートでそれを修正するには?