我试图弄清楚以下两个语句是否都 ODR 使用变量“x”( int x=2
)。
-
int c = x;
-
int y = x+12;
-
int* z = &x;
我的困惑也是如此:
我有read that如果不是“对x应用左值到右值转换会产生一个不调用非平凡函数的常量表达式”,那么它是ODR使用的。我知道第三条语句确实 ODR-uses x
但第一个和第二个,不完全确定......
关于语句 1:该语句不使用 ODR 是否正确 x
?
关于陈述 2:正是针对这个特定的陈述,我正在考虑上述标准。右值到左值的转换应用于 x
满足 + 运算符的要求,但这会产生常量表达式吗?根据我的理解,确实如此,因为它会产生右值 2
,我想它永远不会改变,因此是恒定的。因此,我发现非常令人困惑的是,常量表达式是常量表达式,这将使转换结果成为我所学的常量表达式。问题只是变量 x
是不是恒定的,所以对我来说很奇怪的是,涉及这个的事情的结果突然是恒定...
最佳答案
关于c++ - 非常量表达式的左值到右值转换的结果是常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036033/