c++ - 表达式是在C++中调用函数的结果

标签 c++ expression rvalue

函数调用的结果如何成为表达式?
我正在阅读这篇文章-http://eel.is/c++draft/expr
它被写在那里

An expression is an xvalue if it is the result of calling a function, whether implicitly or explicitly, whose return type is an rvalue reference to object type


我不明白表达式如何成为函数调用的结果。

最佳答案

考虑这两个例子。

const auto someValue = 43 * otherValue;
const auto someOther = func();
在这两种情况下,分配对象的右侧都是一个表达式。在第一种情况下,它是整数乘法。在第二个调用中,这是一个函数调用。让我们尽可能地清楚:表达式不是调用函数的结果-而是func()是表达式。
让我们想象一下这个函数调用的签名是
struct Obj { /* ... */ };

Obj&& func();
在这里,返回类型是对象类型的右值引用。这由标准中的措辞表示。在上述情况下,表达式func()是xvalue(“eXpiring值”)。

关于c++ - 表达式是在C++中调用函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63204925/

相关文章:

R类型转换expression()function()

c++ - 右值是否作为参数传递给函数内部的左值?

c++ - bad_alloc 在通过右值和对象有效性插入对象时

c++ - 如何创建 QTableWidgetItem 右对齐的长文本,左侧有省略号?

Java、JNI 和 C++ : How do I generate a header file from native method declarations?

C++,转换构造函数, "no operator "="匹配这些操作数

c++ - 返回*这个;删除指针

c++ - 尝试使用对象指针的 boost::multi_array

regex - 如何构建正则表达式来解析逗号分隔值但忽略双引号中的逗号?

MATLAB符号表达式: How to force the answer to be sin(alpha)/alpha