c++ - 构造函数调用是纯右值表达式

标签 c++ constructor prvalue

在 C++ 中 standard可以找到纯右值表达式的示例:

"prvalue

The following expressions are prvalue expressions:

a literal (except for string literal), such as 42, true or nullptr;

a function call or an overloaded operator expression of non-reference return type, such as str.substr(1, 2), str1 + str2, or it++; ..."

这是像 T()(构造函数调用)这样的表达式的位置吗?

这样的表达式有别的名字吗?

最佳答案

虽然默认构造函数的特殊情况让我有点困惑,但这被认为是一个强制转换表达式,在列表中排在后面一点:

  • a cast expression to non-reference type, such as static_cast<double>(x), std::string{}, or (int)42;

尽管转换nothing 的想法很奇怪,T()语法确实包含在表格 #4 here 中.

关于c++ - 构造函数调用是纯右值表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44141894/

相关文章:

c++ - 为什么一个常量函数返回的volatile类型可以是常量?

c++ - 如何测量从计算到渲染着色器的 GPU 上下文切换

c++ - 将 TCP 服务器转换为 UDP 服务器

c++ - Make++o++ 提示具有用户定义的前置和后置增量运算符的类型

c++ - 指定临时对象的表达式如何是xvalue表达式?

c++ - "expression must be an l-value or function designator"取地址时出错

c++ - 如何生成 N 类型 T 的元组?

r - S4 构造函数和原型(prototype)

c++ - 使用构造函数初始化成员数组

c++ - Boost message_queue : just the constructor lets me configure it, 无其他成员函数可用