[conv]/6 中"The expression e is used as a glvalue if and only if the initialization uses it as a glva
What is the exact meaning of the statement "The expression e is used as a glvalue if and only if the initialization uses it as a glvalue" in [conv]/6
[conv]/6(重点是我的):
任何隐式转换的效果都与执行相应的声明和初始化,然后使用作为转换结果的临时变量。结果是左值,如果T是左值引用类型或对的右值引用函数类型([dcl.ref]),如果T是对对象类型,否则为prvalue表达式e用作glvalue当且仅当初始化将其用作glvalue时。
在这一特定段落的背景下,上文强调的陈述的含义是什么?
这句话的目的是澄清,在i
立即转换为prvalue的上下文中,像i
(其中i
是一个变量)这样的表达式不会被错误地视为glvalue。
例如,在中
int main() {
const int j = 0;
constexpr int i = j;
}
如果j
被认为是glvalue,则第二个定义将是不正确的,因为j
不是常量表达式的允许结果。然而,j
被用作prvalue,因为初始化使用它作为prvalue,因此链接段落中的另一条规则适用(并且定义格式良好)。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- if数组上的随机数
- 函数如何在不这样做的情况下在新线程上运行"as if"?
- Problems in using ?: as if statement in C++
- 计时与"as-if"规则
- as-if规则是否防止编译器对全局/成员变量的访问重新排序
- c++ as-if规则是否允许存储区重新排序
- C++11 条件包含控制表达"types act as if same representation as" ?
- [conv]/6 中"The expression e is used as a glvalue if and only if the initialization uses it as a glva