テンプレート定義の外で、いくつかのクラス メンバー関数を特殊化することが可能です。
template<class A>
struct B {
void f();
};
template<>
void B<int>::f() { ... }
template<>
void B<bool>::f() { ... }
f
この場合、一般的な型の関数の定義を省略することもできA
ます。
しかし、この特殊化をクラス内に配置するにはどうすればよいでしょうか? このような:
template<class A>
struct B {
void f();
void f<int>() { ... }
void f<bool>() { ... }
};
この場合、どの構文を使用すればよいですか?
EDIT:今のところ、コードの行数が最も少ない解決策は、偽のテンプレート関数f
定義を追加し、元の関数から明示的に呼び出すことですf
:
template<class A>
struct B {
void f() { f<A>(); }
template<class B>
void f();
template<>
void f<int>() { ... }
template<>
void f<bool>() { ... }
};