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

Constructor call is a prvalue expression

在 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.