SFINAE 原則/enable_if を使用して、クラス テンプレート メソッドの部分的な特殊化を「偽造」できるのではないかと思います。たとえば、 のFoo
2 つのバージョンFoo::bar
が定義されているクラス テンプレートがあるとします。たとえば、一方を有効にしてもう一方を無効にしたい場合T2 = int
や、その逆の場合。
template<typename T1, typename T2>
struct Foo
{
void bar();
};
// Enable if T2 != int (disable otherwise)
template<typename T1, typename T2>
void Foo<T1,T2>::bar()
{
}
// Enable if T2 == int (disable otherwise)
template<typename T1, typename T2>
void Foo<T1,T2>::bar()
{
}
PS: enable_if を優先してください。ありがとう。