Я пытаюсь реализовать класс Expression с 2 специализациями для арифметических типов. Это класс по умолчанию:Шаблон специализации с enable_if и is_arithmetic для класса
template<typename Left, typename Op, typename Right, typename std::enable_if<!std::is_arithmetic<Left>::value, Left>::type* = nullptr>
class Expression { /* ... */ }
И те две специализации:
template<typename Left, typename Op, typename Right, typename std::enable_if<std::is_arithmetic<Left>::value, Left>::type* = nullptr>
class Expression { /* ... */ };
template<typename Left, typename Op, typename Right, typename std::enable_if<std::is_arithmetic<Right>::value, Right>::type* = nullptr>
class Expression { /* ... */ };
Если я теперь скомпилировать мой код, я получаю эту ошибку:
Error C3855 'Expression': template parameter '__formal' is incompatible with the declaration Vector
Как я могу решить мою проблема с шаблонами и специализациями или фиктивными типами, как я их использовал.
Пожалуйста, поделитесь минимальным примером кода, показывающим ту же ошибку. С предоставленной вами информацией трудно догадаться, что случилось. – paweldac
Я не вижу параметр шаблона с именем '__formal' (который является зарезервированным идентификатором) или декларация с именем' Vector' в любом месте вашего примера кода. Пожалуйста, опубликуйте [mcve]. – Praetorian