对 auto 的赋值是否可以具有右值表达式结果以外的类型?

Can assignment to auto have a type other than the result of the r-value expression?

考虑以下因素:

auto tmp = a + b;

其中 ab 是用户定义的类型,其中 returns 代理对象延迟评估(这是比显示的更复杂的表达式所必需的)。

有没有办法让这种情况下的结果成为运算符重载的结果类型以外的东西?

我想知道带有 r/l-value 说明符 T operator() && 的隐式转换运算符是否可能在这里有用,但我不太想如何。

我很欣赏这个问题含糊不清且缺乏细节,但我认为我想要的概念在概念上非常简单。

如果我不想auto tmp = ...而是some_concrete_type tmp = ...但在构造函数中使用代理,我可以想办法做到这一点。

auto 总是会从初始值设定项中推断出它的类型。它不会应用转换,除非你自己这样做(除了它删除顶级参考和 cv 资格的事实)。

如果您的初始化表达式产生某种代理而不是具体类型,那么这就是 auto 将被推导的结果。