![](/img/trans.png)
[英]Why does calling a function on seperate lines change the result in c++?
[英]expression as the result of calling a function in C++
function 调用的结果如何是表达式? 我正在阅读这篇文章 - http://eel.is/c++draft/expr并写在那里
如果表达式是调用 function(无论是隐式还是显式)的结果,则表达式是一个 xvalue,其返回类型是对 object 类型的右值引用
我不明白表达式如何成为 function 调用的结果。
考虑这两个例子。
const auto someValue = 43 * otherValue;
const auto someOther = func();
在这两种情况下,赋值的右侧都是一个表达式。 在第一种情况下,它是 integer 乘法。 在第二个调用中,它是一个 function 调用。 让我们尽可能清楚:表达式不是调用 function 的结果——相反, func()
是一个表达式。
假设这个 function 调用的签名是
struct Obj { /* ... */ };
Obj&& func();
这里,返回类型是 object 类型的右值引用。 这是标准中的措辞所表示的。 在上述情况下,表达式func()
是一个xvalue (一个“eXpiring 值”)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.