提问者:小点点

表达式作为C++中调用函数的结果


函数调用的结果怎么可能是表达式? 我正在阅读这篇文章-http://eel.is/C++draft/expr,其中写道

如果表达式是调用函数(无论是隐式还是显式)的结果,该函数的返回类型是对对象类型的rvalue引用,那么它就是xvalue

我不明白表达式怎么会是函数调用的结果。


共1个答案

匿名用户

考虑以下两个例子。

const auto someValue = 43 * otherValue;
const auto someOther = func();

在这两种情况下,赋值的右手边都是表达式。 第一种情况是整数乘法。 在第二个调用中,它是一个函数调用。 让我们尽可能明确一点:表达式不是调用函数的结果--相反,func()是一个表达式。

让我们假设这个函数调用的签名是

struct Obj { /* ... */ };

Obj&& func();

这里,返回类型是对象类型的rvalue引用。 这是指标准中的措辞。 在上面的例子中,表达式func()是一个xvalue(一个“过期值”)。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(表达式|c++|中|调用|函数)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?