如何调用完全专业的重载运算符?

时间:2018-09-09 21:11:10

标签: c++11 templates overloading operator-keyword

我有一个这样定义的模板重载运算符:

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;

如何重写第二种形式以使其起作用?谢谢!

0 个答案:

没有答案