函数调用的结果怎么可能是表达式? 我正在阅读这篇文章-http://eel.is/C++draft/expr,其中写道
如果表达式是调用函数(无论是隐式还是显式)的结果,该函数的返回类型是对对象类型的rvalue引用,那么它就是xvalue
我不明白表达式怎么会是函数调用的结果。
考虑以下两个例子。
const auto someValue = 43 * otherValue;
const auto someOther = func();
在这两种情况下,赋值的右手边都是表达式。 第一种情况是整数乘法。 在第二个调用中,它是一个函数调用。 让我们尽可能明确一点:表达式不是调用函数的结果--相反,func()
是一个表达式。
让我们假设这个函数调用的签名是
struct Obj { /* ... */ };
Obj&& func();
这里,返回类型是对象类型的rvalue引用。 这是指标准中的措辞。 在上面的例子中,表达式func()
是一个xvalue(一个“过期值”)。