Я пытаюсь получить следующий код для компиляции: < /p>
template ::type = 0 >
class Calc
{
public:
int operator()( const T& v ) const {
return v.getValue();
}
};
template
class Calc : CalcBase
{
};
< /code>
В компиляции я получаю следующую ошибку: < /p>
c.cpp:26: error: template parameter 'typename std::enable_if::type '
c.cpp:36: error: redeclared here as 'typename std::enable_if::type '
< /code>
Намерение здесь состоит в том, чтобы выбрать версию Calc, которая переопределяет оператор вызова базового класса, если параметр передачи шаблона является классом. Если пропущенный параметр является фундаментальным типом, то мы выбираем версию Calc, которая не переопределяет функциональность базового класса.
Не могли бы вы помочь мне понять, как я могу работать? < /P>
Подробнее здесь: https://stackoverflow.com/questions/381 ... eclaration