正在初始化C++11中要求为prvalue的表达式
Are initializing expressions required to be prvalues in C++11?
在以下示例中:
extern bool b1;
bool b2(b1);
初始化表达式b1
是一个左值布尔。
在用于初始化b2
之前,是否对其应用左值到右值的转换以将其转换为prvalue?这在标准中有何规定?
是的,执行左值到右值的转换。非类类型的表达式初始化非引用非类类型需要一个prvalue。
这很难从标准文本中明确确定,除非假设这两种情况,然后意识到否定的答案将打破许多其他规则(请参阅odr用法和常量表达式)。将表达式e转换为类型T以及通过表达式e初始化类型T的变量的定义在条款4的序言和条款8.5之间几乎是循环的。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 初始化声明符是 prvalue 表达式吗?
- 我们如何测试是否可以使用 prvalue 调用某种类型的表达式
- 如何理解"动态类型:〈prvalue〉静态类型的prvalue表达式PP_7
- 折叠表达式的值类别是否始终是 prvalue?
- 正在初始化C++11中要求为prvalue的表达式