在cpp中定义模板专业化?

时间:2012-10-23 16:09:41

标签: c++ visual-studio templates template-specialization

我可以在cpp中定义一个专门的函数,就像这样......

// header

template<typename T>
void func(T){}

template<>
void func<int>(int);

// cpp

template<>
void func<int>(int)
{}

如何在cpp中的专门类中定义方法?像这样(这不起作用,我得到error C2910: 'A<int>::func' : cannot be explicitly specialized)......

// header

template<typename T>
struct A
{
    static void func(T){}
};

template<>
struct A<int>
{
    static void func(int);
};

// cpp

template<>
void A<int>::func(int)
{}

1 个答案:

答案 0 :(得分:5)

.cpp文件中使用以下语法:

void A<int>::func(int)
{
}

这是Visual C ++的一种功能。

有关详细信息,请参阅MSDN C2910 error description

  

由于在Visual Studio .NET 2003中完成的编译器一致性工作,也会生成此错误:对于代码,将在Visual C ++的Visual Studio .NET 2003和Visual Studio .NET版本中有效,删除模板&lt;&gt;