我有一个类模板,我们称之为A
,它有一个成员函数abc()
:
template <typename T>
class A{
public:
T value;
void abc();
};
我可以使用以下语法在类声明之外实现成员函数abc()
:
template <typename T>
void A<T>::abc()
{
value++;
}
我想要做的是为这个类创建一个模板专门化,让我们说int
。
template <>
class A<int>{
public:
int value;
void abc();
};
问题是:为专门课程实施abc()
的正确语法是什么?
我尝试使用以下语法:
template <>
void A<int>::abc()
{
value += 2;
}
但是这不能编译。
答案 0 :(得分:4)
删除template<>
:
void A<int>::abc()
{
value += 2;
}
答案 1 :(得分:4)
void A<int>::abc()
{
value += 2;
}
因为A<int>
是explicit specialisation
的{{1}}。
http://liveworkspace.org/code/982c66b2cbfdb56305180914266831d1
n3337 14.7.3 / 5明确专门的类模板的成员是 以与普通类成员相同的方式定义,并且不使用模板&lt;&gt;语法强>
[例如:
A<T>