何がった
こんなような事したかったんだけど、コンパイルエラーになってしまった
template<typename T> struct CHoge{ template<typename U> static U Func(int val){ return val; } }; template<typename T> struct CPiyo{ template<typename U> static U Func(int val){ return CHoge<T>::Func<U>(val); } }; CPiyo<int>::Func<int>(10); //<-コンパイルエラー!
: error: expected primary-expression before ‘>’ token
要するに、テンプレートクラス内のテンプレート関数をテンプレートクラス内のテンプレート関数から呼び出したい(ただし、テンプレートパラメータは明示的に指定)けどコンパイルエラーになる。
どうすればいいのか
これをこうじゃ
template<typename T> struct CPiyo{ template<typename U> static U Func(int val){ return CHoge<T>::template Func<U>(val); } };