在 C++标准中,可以找到纯右值表达式的示例:
“公允价值
以下表达式是纯右值表达式:
文字(字符串文字除外),例如 42、true 或 nullptr;
非引用返回类型的函数调用或重载运算符表达式,例如 str.substr(1, 2)、str1 + str2 或 it++; ……”
这是T()
(构造函数调用)之类的表达式会去的地方吗?
这种表达方式还有别的名字吗?
在 C++标准中,可以找到纯右值表达式的示例:
“公允价值
以下表达式是纯右值表达式:
文字(字符串文字除外),例如 42、true 或 nullptr;
非引用返回类型的函数调用或重载运算符表达式,例如 str.substr(1, 2)、str1 + str2 或 it++; ……”
这是T()
(构造函数调用)之类的表达式会去的地方吗?
这种表达方式还有别的名字吗?
虽然默认构造函数的特殊情况让我有点困惑,但这被认为是一个强制转换表达式,它在列表中略低:
- 转换为非引用类型的表达式,例如
static_cast<double>(x)
,std::string{}
, 或(int)42
;
尽管什么都不转换的想法很奇特,但T()
语法确实在此处以 #4 形式涵盖。