Я могу определить специализированную функцию в CPP, как так …
// заголовок
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
) …
// заголовок
template<typename T>
struct A
{
static void func(T){}
};
template<>
struct A<int>
{
static void func(int);
};
// cpp
template<>
void A<int>::func(int)
{}
Используйте следующий синтаксис в вашем .cpp
файл:
void A<int>::func(int)
{
}
Это особенность Visual C ++.
Увидеть MSDN C2910 описание ошибки для деталей:
Эта ошибка также будет сгенерирована в результате работы по согласованию компилятора, которая была выполнена в Visual Studio .NET 2003 :. Для кода будет действительным в Visual Studio .NET 2003 и Visual Studio .NET версии Visual C ++, удалить шаблон <>.
Других решений пока нет …