初始化表达式是否需要在C ++ 11中作为prvalues?

时间:2013-08-16 23:10:04

标签: c++ c++11

在以下示例中:

extern bool b1;
bool b2(b1);

初始化表达式b1是一个左值布尔值。

在用于初始化b2之前,是否应用左值到右值转换将其转换为prvalue?标准中说明了哪些内容?

1 个答案:

答案 0 :(得分:0)

是的,执行左值到右值的转换。通过非类类型的表达式初始化非引用非类类型需要prvalue。

这很难从标准文本中明确确定,除非假设两种情况,然后意识到否的答案将破坏许多其他规则(参见odr-use和constant表达式)。将表达式e转换为类型T和通过表达式e初始化类型T的变量的定义在第4节和第8.5节的前导码之间几乎是循环的。