ヘッダーファイルの先頭でジェネリック関数の宣言を行うことはできますか?
template<class t> t func(t);
その後、それを特殊化することはできますが、
テンプレートの特殊化と関数のオーバーロード
はそれを行わないように指示します。
ヘッダーファイルの先頭でジェネリック関数の宣言を行うことはできますか?
template<class t> t func(t);
その後、それを特殊化することはできますが、
テンプレートの特殊化と関数のオーバーロード
はそれを行わないように指示します。
まず、テンプレート関数を確実に宣言してから定義したり、特殊化を定義したりできます。だが...
関数の特殊化は完全な特殊化である必要があります。つまり、テンプレート関数を部分的に特殊化することはできません。これで、実際に関数テンプレートを特殊化できますが、オーバーロードを提供することには利点(および欠点)がありますが、ほとんどの場合、それはより良いオプションになります。
あなたはこれを読みたいかもしれません:http ://www.gotw.ca/publications/mill17.htm