考虑以下:
auto tmp = a + b;
其中
a
和b
是用户定义的类型,它们返回代理对象以延迟求值(这是比所示更复杂的表达式所必需的)。在这种情况下,是否有办法使运算符重载的结果类型不同于其他类型?
我想知道也许带有r / l值说明符
T operator() &&
的隐式转换运算符在这里可能有用,但是我不太想怎么做。我很欣赏这个问题含糊不清,也没有细节,但是我认为我想要的概念非常简单。
如果我不想做
auto tmp = ...
而是some_concrete_type tmp = ...
但在构造函数中使用了代理,我可以想到一种方法。
最佳答案
auto
总是会从初始化程序中推断出其类型。除非您自己进行转换(除非它会删除顶级引用和简历资格),否则不会进行转换。
如果您的初始化表达式导致某种代理而不是具体类型,那么这就是auto
的推论。
关于c++ - auto的赋值可以不是r值表达式的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403732/