Bar次の設定で、派生クラス内の名前を参照できるようにするにはどうすればよいDerived<T>ですか?
template <typename T> struct Foo
{
template <typename U> struct Bar { };
};
template <typename T> struct Derived : Foo<T>
{
// what goes here?
Bar<int> x; // Error: 'Bar' does not name a type
};
試してみましusing Foo<T>::Bar;たが、役に立ちません。using単純な宣言を維持できるように、ネストされた基本テンプレートの名前を派生クラスに知らせることができる宣言はありBar<int> xますか?
と言えることはわかっていますがtypename Foo<T>::template Bar<int> x;、そのようなケースがたくさんあるので、コードに不必要に冗長な負担をかけたくありません。また、個別の " ints" も多数あるため、typedefネストされたテンプレート インスタンスごとに for each を使用することもできません。
また、現時点では GCC 4.7 も C++11 も使用できないため、テンプレート エイリアスのない「従来の」ソリューションが必要です。