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

11

Решение

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

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

Это особенность Visual C ++.

Увидеть MSDN C2910 описание ошибки для деталей:

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

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]