У меня есть класс, который должен использоваться для применения операторов к скалярам или векторам, и их комбинация 2. Класс работает, но я должен вручную передать параметры шаблона, в то время как я хотел бы, чтобы их вычиталиконструкторКод следующий:
template <template <class,class> class OP, typename Type1, typename Type2>
class BinaryOperator :
public OP <typename Type1::ReturnType, typename Type2::ReturnType> {
public:
BinaryOperator(Type1* arg1_, Type2* arg2_) :
m_arg1(arg1_),
m_arg2(arg2_) {
}
ReturnType evaluate() {
return this->apply(m_arg1->evaluate(), m_arg2->evaluate());
}
private:
Type1* m_arg1;
Type2* m_arg2;
};
Теперь OP - это структура с полной специализацией шаблона для различных комбинаций Scalar / Vector, которые являются типами ReturnTypes параметров 2 ctor.Я должен написать явно
new BinaryOperator<op_adder, Axis, Constant>(a1, c2)
, в то время как я просто хотел бы написать
new BinaryOperator<op_adder>(a1, c2)
и вычесть Axis и Constant.Ошибка компилятора:
too few template arguments for class template 'BinaryOperator'
Может кто-нибудь помочь?Что я делаю не так?Спасибо, Алекс