以下代码段在Clang 3.5中正常工作,但在GCC 4.9.2中没有:
int main()
{
constexpr volatile int i = 5;
}
Run Code Online (Sandbox Code Playgroud)
有错误:
错误:这里不能使用'volatile'和'constexpr'
如果我检查Clang生成的程序集,它会5
按预期显示:
movl $5, -4(%rsp)
Run Code Online (Sandbox Code Playgroud)
在GCC中,constexpr int i = 5
被优化掉了,但volatile int i = 5
也在5
装配中显示出来.volatile const int i = 5
在两个编译器中编译.对于同时具有易失性和常量的东西而言,这不是一个外国概念.
哪个编译器的标准是正确的?