相关疑难解决方法(0)

constexpr可以与volatile结合使用吗?

以下代码段在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在两个编译器中编译.对于同时具有易失性和常量的东西而言,这不是一个外国概念.

哪个编译器的标准是正确的?

c++ gcc clang language-lawyer c++11

26
推荐指数
2
解决办法
1531
查看次数

标签 统计

c++ ×1

c++11 ×1

clang ×1

gcc ×1

language-lawyer ×1