inline auto makeOperation(const ExpressionBase<DerivedT1>& a_operand1, const ExpressionBase<DerivedT2>& a_operand2) { return BinaryOperation<OperationT, DerivedT1, DerivedT2>(a_operand1.self(), a_operand2.self()); }
inline auto makeOperation(const ExpressionBase<DerivedT>& a_operand) { return UnaryOperation<OperationT, DerivedT>(a_operand.self()); }