构造函数调用是纯右值表达式
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.
中
在 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.