我想知道 SFINAE 原则/enable_if 是否可以用来“伪造”类模板方法的部分特化。例如,给定定义Foo
了两个版本的类模板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 的首选。谢谢。