我有一个情景,其中有一个模板类
template<typename X, typename Y>
class Foo
{
typedef Y::NestedType Bar;
int A (Bar thing);
void B();
int C(X that);
// other stuff
};
然后,当X是给定类型时,我希望A()方法具有不同的行为(但B和C可以保持不变,实际代码实际上还有大约10个其他方法,其中一些非常冗长且经常需要调整...因此,我宁愿避免做全类专业化并复制粘贴整个类实现)
然后,我继续写道:
template<typename T>
int Foo<MyType, T>::A(Bar thing);
但是我的编译器(clang 163.7.1)拒绝将其视为任何类型的模板特化。
在我编写代码的方式中是否隐藏了某些语法错误,或者这种编码风格是否无效?不幸的是,即使其他编译器支持这个习惯用法,我的公司也被卡在clang上。
感谢您对此的任何帮助。