Я хочу, чтобы каким-то образом объединить шаблоны, как они в один:Как передать арифметический оператор шаблону?
template <class Result, class T1, class T2>
class StupidAdd
{
public:
T1 _a; T2 _b;
StupidAdd(T1 a, T2 b):_a(a),_b(b) {}
Result operator()() { return _a+_b; }
};
template <class Result, class T1, class T2>
class StupidSub
{
public:
T1 _a; T2 _b;
StupidSub(T1 a, T2 b):_a(a),_b(b) {}
Result operator()() { return _a-_b; }
};
(а затем и тот же код для Mul, Div и т.д.), где весь код является тем же самым, за действительное «+», за исключением, «-» (и «StupidAdd», «StupidSub» и т. д.).
Эти глупые «функторы» затем используются другим шаблоном. Как избежать повторения, БЕЗ препроцессора? (Причина, по которой я попал в шаблоны, заключалась в том, чтобы избежать препроцессора)
То есть, как я могу передавать арифметические операторы в шаблон?
Вы пытаетесь перегрузить эти операторы или это просто пример? – Jacob
Я не перегружаю арифметические операторы - я просто хочу иметь возможность передавать их в шаблоне, что-то вроде template <класс Результат, класс A, класс B, класс ArithOp> Результат DoWork (A a, B b) {return ArithOp (a, b); } ... без определения таких глупых вещей, как StupidAdd, StupidSub – OldCoder