我可以超负荷运算符,以指针和非构造模板对象

Can I overload an operator taking a pointer and a non-constructed template object?

本文关键字:对象 运算符 超负荷 指针 我可以      更新时间:2023-10-16

我想编写一些这样的代码:

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<...>只能是类(或别名(模板(这是无效的表达式(或函数模板(它成为函数指针,您无法超载(。