Перечисление шаблона экспрессии приводит к недействительной арифметике между различными типами перечисления ошибки компиC++

Программы на C++. Форум разработчиков
Anonymous
Перечисление шаблона экспрессии приводит к недействительной арифметике между различными типами перечисления ошибки компи

Сообщение Anonymous »

Компиляция (решение, содержащее) этот код: < /p>

Код: Выделить всё

template 
class Expression
{};

// CRTP (Curiously Recurring Template Pattern)
template 
class ExprTimes : public Expression
{
LHS lhs;
RHS rhs;

public:

// Constructor
explicit ExprTimes
(const Expression& l, const Expression& r)
: lhs(static_cast(l)),
rhs(static_cast(r)) {}

double value() const
{
return lhs.value() * rhs.value();
}

enum { numNumbers = LHS::numNumbers + RHS::numNumbers };
< /code>
дает никакой ошибки с компилятором MSVC C ++, в то время как с компилятором Intel 2034 C ++ он дает «ошибку: неверная арифметика между различными типами перечисления» на последней строке. Я попытался разместить оба элемента последней строки в int 
без успеха.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ifferent-e

Вернуться в «C++»