- 471 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 11:25:02.57 ]
- テンプレート関数について教えてください。
テンプレート関数に部分特殊化はないと思っていたのですが 以下のように書いたらよくわからなくなってきました。 //上になにもテンプレート宣言がないときは<>が構文エラー //template<typename T, typename U, typename V> void f<>(T, U, V){} //通常のテンプレート関数 template<typename T, typename U> void f(T, U){} //テンプレートの特殊化は問題なし? template<> void f<>(int, int){} //この構文は何? 既に本体を持っています。上のがなければok //void f<>(int, int){} //同じ引数の別のオーバーロードは問題なし? void f(int, int){} //テンプレートの部分特殊化のつもりの文 template<typename T, typename U> void f<>(T*, U){} //同じ引数の別のオーバーロードのつもりの文。関数テンプレートは既に定義されています //template<typename T, typename U> void f(T*, U){} //別のオーバーロードなのにtemplateの部分特殊化のように書ける? template<typename T> void f<>(T*){} 上の文のおかしなところをご指摘いただけないでしょうか。 VC2010です。
|

|