Перечисление шаблона экспрессии приводит к недействительной арифметике между различными типами перечисления ошибки компи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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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