У меня есть следующий код в заголовочном файле:
template<typename A, typename B> class TemplateTest;
template<>
class TemplateTest<int, double>
{
public:
float operator() (float a);
};
Определение в файле cpp:
template<> // this is problematic line
float TemplateTest<int, double>::operator()(float a)
{
float b;
b = a + 5;
return b;
}
с «template‹>» в определении MSVC возвращает ошибку C2910, так как интерпретирует operator() как метод шаблона, а не метод класса шаблона. GCC ведет себя аналогично. Но Solaris CC требует «шаблон‹>» (в противном случае он выдает ошибку «требуется синтаксис «шаблон‹>» при явной специализации члена ...'.
Итак, мой вопрос в том, какой из них правильный и как заставить код компилироваться на всех этих платформах.
operator()
определении нет ни одного. - person aschepler   schedule 17.10.2017