以下に示すように、テンプレート化された型を宣言するのが非常に困難です。
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class Foo
{
typedef T Bar;
};
template <class T>
typedef typename Foo<T>::Bar Bar;
int main(int argc, char *argv[])
{
Bar bar;
Foo<int> foo;
system("PAUSE");
return EXIT_SUCCESS;
}
エラーが発生します
template declaration of `typedef typename Foo<T>::Bar Bar'
ラインについて
template <class T>
typedef typename Foo<T>::Bar Bar;
タイプ名 Foo::Bar を自分のコードに書くことを避けたいので、これを行っています。
私は何を間違っていますか?