gpt4 book ai didi

c++ - 我可以重载采用指针和非构造模板对象的运算符吗?

转载 作者:太空狗 更新时间:2023-10-29 22:56:00 25 4
gpt4 key购买 nike

我想写一些这样的代码:

some_container | foo<args...>;

为了具体起见,假设 RHS 是 foo<2> .

棘手的部分是,foo是应该自动实例化的东西。 IOW,如果foo<2>,我“失败”了必须显式实例化,或者如果我必须坚持 (){}之后。

如果 LHS 是类类型,我可以通过制作 foo 来完成此操作返回“标签”类型的函数,然后提供 operator| 的模板化重载.但是,如果 LHS 也是指针类型(如它是 C 样式数组),这将不起作用(有关我当前使用的代码,请参见 Overload operator| for fixed-size arrays?)。

C++11(即不使用 C++14 变量模板)有什么方法可以实现这种语法吗?

这个表达式的结果最终需要是:

bar<decltype(some_container), args...>{some_container}

(例如 bar<int (&)[N], 2> 用于左轴 int[N] 和右轴 foo<2>)。

最佳答案

没有。语法 foo<...>只能是一个类(或别名)模板(这是一个无效的表达式)或函数模板(它成为一个函数指针,你不能为它重载)。

关于c++ - 我可以重载采用指针和非构造模板对象的运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com