Шаблон выражения, добавление переменной и значения

У меня есть шаблон выражения, который добавляет переменную с константой в данном выражении. Я хочу преобразовать это, чтобы добавить переменную с любым данным числом.
Структуры для констант и переменных:

struct Var {
int operator () (int v) { return v; }
};

struct  Constant {
int c;
Constant (int d) : c (d) {}
int operator () (int) { return c; }
};

Это структура выражения:

template < class L, class H, class OP >
struct DBinaryExpression {
H h_;
L l_;

DBinaryExpression (L l, H h) : l_ (l), h_ (h) {}
int operator () (int d) { return OP::apply (l_ (d), h_(d)); }
};

Это структура сложения:

struct Add {
static int apply (int l, int h) { return l + h; }
};

Это шаблон оператора:

template< class A, class B >
DExpression<DBinaryExpression<DExpression<A>, DExpression<B>, Add> >
operator + (DExpression<A> a, DExpression<B> b)
{
typedef DBinaryExpression <DExpression<A>, DExpression<B>, Add> ExprT;
return DExpression<ExprT>(ExprT(a,b));
}

Это заголовочный файл:

int main (void)
{
typedef DExpression <Var> Variable;
typedef DExpression <Constant> Literal;

Variable x ((Var()));
Literal l (Constant (50));

int a=10;evaluate (a, x+l);

return 0;
}

На самом деле это не мой код, но я добавил все основные арифметические операции в код.

Есть идеи, ребята? Я новичок в C ++ шаблоны, и я не очень понимаю.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector