Слишком мало проблем со списком параметров шаблона - PullRequest
3 голосов
/ 17 мая 2011

Может кто-нибудь сказать, пожалуйста, как сделать следующий псевдокод совместимым с GCC4 ?Интересно, как это работает под MSVC ...

typedef int TypeA;
typedef float TypeB;

class MyClass
{
// No base template function, only partially specialized functions...
    inline TypeA myFunction<TypeA>(int a, int b) {} //error: Too few template-parameter-lists
    template<> inline TypeB myFunction<TypeB>(int a, int b) {}
};

1 Ответ

5 голосов
/ 17 мая 2011

Правильный способ кодирования этой конструкции:

typedef int TypeA;
typedef float TypeB;
class MyClass
{
    template <typename T> 
    T myFunction( int a, int b );
};
template <> 
inline TypeA MyClass::myFunction<TypeA>(int a, int b) {}
template <> 
inline TypeB MyClass::myFunction<TypeB>(int a, int b) {}

Обратите внимание, что функция-член шаблона должна быть объявлена ​​ внутри объявления класса, но специализации должны быть определены вне ее , на уровне пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...