Define template specialization in cpp?

谁都会走 提交于 2019-12-12 08:23:41

问题


I can define a specialized function in a cpp like so...

// header

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

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

// cpp

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

How can I define a method in a specialized class in a cpp? Like so (which doesn't work, I get 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:


Use following syntax in your .cpp file:

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

This is Visual C++ kinda feature.

See MSDN C2910 error description for details:

This error will also be generated as a result of compiler conformance work that was done in Visual Studio .NET 2003:. For code will be valid in the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, remove template <>.



来源:https://stackoverflow.com/questions/13034799/define-template-specialization-in-cpp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!