Подтвердить что ты не робот

Определить специализацию шаблона в 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)
{}
4b9b3361

Ответ 1

Используйте следующий синтаксис в файле .cpp:

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

Это функция Visual С++.

Подробнее см. описание ошибки MSDN C2910:

Эта ошибка также будет сгенерирована в результате работы по совместимости компилятора, которая была выполнена в Visual Studio.NET 2003:. Код будет действителен в Visual Studio.NET 2003 и Visual Studio.NET версии Visual С++, удалить шаблон < > .