У меня есть оператор перегрузки шаблона, определенный следующим образом:
enum E1 {e1};
enum E2 {e2};
template <typename T, e1> void operator<<(T& t, int i){ t += i;}
template <typename T, e2> void operator<<(T& t, int i){ t -= i;}
double d = 0;
Хорошо, если я вызову оператора таким образом (что выглядит отстойно)
operator<< <double, e1> (d, 3);
но синтаксическая ошибка, если я вызову его так:
d << <double, e1> 3;
Как переписать вторую форму, чтобы она работала? Спасибо!