C++ 类模板专门化中的成员函数语法
我有一个类模板,我们称它为C++ 类模板专门化中的成员函数语法,c++,templates,syntax,template-specialization,C++,Templates,Syntax,Template Specialization,我有一个类模板,我们称它为a,它有一个成员函数abc(): 我想做的是为这个类创建一个模板专门化,比如说int template <> class A<int>{ public: int value; void abc(); }; 但是这不会编译。删除模板: void A::abc() { 数值+=2; } 顺便说一句,如果您没有专门化整个类模板,您的语法也会起作用。您可以专门化单个成员函数。 template <typename T> v
a
,它有一个成员函数abc()
:
我想做的是为这个类创建一个模板专门化,比如说int
template <>
class A<int>{
public:
int value;
void abc();
};
但是这不会编译。删除模板:
void A::abc()
{
数值+=2;
}
顺便说一句,如果您没有专门化整个类模板,您的语法也会起作用。您可以专门化单个成员函数。
template <typename T>
void A<T>::abc()
{
value++;
}
template <>
class A<int>{
public:
int value;
void abc();
};
template <>
void A<int>::abc()
{
value += 2;
}
void A<int>::abc()
{
value += 2;
}
void A<int>::abc()
{
value += 2;
}
template<class T> struct A {
struct B { };
template<class U> struct C { };
};
template<> struct A<int> {
void f(int);
};
void h() {
A<int> a;
a.f(16);
}
// A<int>::f must be defined somewhere
// template<> not used for a member of an
// explicitly specialized class template
void A<int>::f(int) { /∗ ... ∗/ }