Определить специализацию шаблона в cpp?
Я могу определить специализированную функцию в 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)
{}
Ответы
Ответ 1
Используйте следующий синтаксис в файле .cpp
:
void A<int>::func(int)
{
}
Это функция Visual С++.
Подробнее см. описание ошибки MSDN C2910:
Эта ошибка также будет сгенерирована в результате работы по совместимости компилятора, которая была выполнена в Visual Studio.NET 2003:. Код будет действителен в Visual Studio.NET 2003 и Visual Studio.NET версии Visual С++, удалить шаблон < > .