1

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

“公允价值

以下表达式是纯右值表达式:

文字(字符串文字除外),例如 42、true 或 nullptr;

非引用返回类型的函数调用或重载运算符表达式,例如 str.substr(1, 2)、str1 + str2 或 it++; ……”

这是T()(构造函数调用)之类的表达式会去的地方吗?

这种表达方式还有别的名字吗?

4

1 回答 1

4

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

  • 转换为非引用类型的表达式,例如static_cast<double>(x), std::string{}, 或(int)42;

尽管什么都不转换的想法很奇特,但T()语法确实在此处以 #4 形式涵盖。

于 2017-05-23T18:27:47.037 回答