タイプTとパラメータNを引数として取り、TのN番目のグレードのポインタを'与える'テンプレートを作成したい(たとえば、Tがint
でNが2
与えられる場合int**
)
これまでの私のコードは次のとおりです。
template<class T,int N>
struct ptr
{
typedef ptr<T*,N-1>::t t;
};
template<class T>
struct ptr<T,0>
{
typedef T t;
};
int main()
{
ptr<int,3>::t a; //a should be int***
}
しかし、それは私にこのコンパイラエラーを与えます:
source.cpp:6:11: error: need 'typename' before 'ptr<T*, (N - 1)>::t' because 'ptr<T*, (N - 1)>' is a dependent scope
これはどういう意味で、どのように修正できますか(C ++で可能な場合)?