我可以超负荷运算符,以指针和非构造模板对象
Can I overload an operator taking a pointer and a non-constructed template object?
我想编写一些这样的代码:
some_container | foo<args...>;
为了具体,假设RHS是foo<2>
。
棘手的部分是,foo
是应该自动实例化的东西。IOW,如果必须明确实例化foo<2>
,或者如果我必须粘贴()
或{}
,则"失败"。
如果LHS是类类型,我可以通过使foo
作为返回" TAG"类型的函数来实现这一目标,然后提供operator|
的模板过载。但是,如果LHS也是指针类型,请参见固定大小数组的过载操作员|有关固定大小的数组?(P>
在C 11 中有什么方法(即不使用C 14变量模板(实现此语法?
最终需要的结果是:
bar<decltype(some_container), args...>{some_container}
(例如, bar<int (&)[N], 2>
for LHS int[N]
和RHS foo<2>
(。
no。语法foo<...>
只能是类(或别名(模板(这是无效的表达式(或函数模板(它成为函数指针,您无法超载(。
相关文章:
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 运算符重载 += 添加新对象
- 如何用 2 个对象过度引导运算符
- C++内联运算符重载中,请参阅当前对象
- 使用运算符"="在C++中用值初始化对象
- C++运算符重载做双 * 对象
- 如何在自定义对象的<<运算符中添加自定义前缀
- 尝试重载输出运算符时,我无法遍历对象向量
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 在之后仍需要使用源对象时调用父移动分配运算符
- 错误:三元运算符无法在对象中正常工作"cout"
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 无法使用迭代器查找类对象。(二进制 '==': 'userInfo' 不定义此运算符)
- 重载加法运算符(使用函数向对象添加字符串)
- 临时对象上的运算符重载
- 如何使用运算符+重载函数正确返回对象?
- 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐、可能有运算符 new 等)
- 基于 C++98 中函数对象运算符 () 签名的“重载”函数模板