c++11 - 如何调用完全专用的重载运算符?
问题描述
我有一个这样定义的模板重载运算符:
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;
如何重写第二种形式以使其工作?谢谢!
解决方案
推荐阅读
- django - 使用模型类创建的对象之间的 Django 选择列表表单
- sql - 使用 ROLLUP 计算总计,同时显示月份名称并按月份编号排序
- bash - sed: There is no file or directory on ssh bash script
- c# - 如何将 .net core EF 注入 WPF 应用程序
- go - http.SetCookie 的内存地址无效
- web-scraping - 用 Jasmine 测试 puppeteer?
- sql - 日期绑定 SQL 分组依据
- node.js - 数组的节点肥皂问题
- sql - 哪个Oracle查询更快
- java - 使用 AES-128-ECB(无填充)解码 base64 文本,哈希 md5 作为密钥