首页 > 解决方案 > 如何调用完全专用的重载运算符?

问题描述

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

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;

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

标签: c++11templatesoverloadingoperator-keyword

解决方案


推荐阅读