ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

テンプレートクラスのテンプレートメンバ関数をテンプレートクラスのメンバ関数から呼び出す

何がった

こんなような事したかったんだけど、コンパイルエラーになってしまった

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);
	}
};

おしまい