Код: Выделить всё
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