gpt4 book ai didi

c++ - 错误 : redeclaration differs in ‘constexpr’

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:08 26 4
gpt4 key购买 nike

Clang 接受这段代码,但 GCC 拒绝它:

class Foo {
public:
static constexpr double kVal = 0.25f;
};

const double Foo::kVal;

(使用 clang 3.0 和 g++ 4.6.3)

~$ clang++ foo.cc -std=c++11 -c 
[ok]
~$ g++ foo.cc -std=c++0x -c
foo.cc:6:19: error: redeclaration ‘Foo::kVal’ differs in ‘constexpr’
foo.cc:3:34: error: from previous declaration ‘Foo::kVal’
foo.cc:6:19: error: declaration of ‘constexpr const double Foo::kVal’ outside of class is not definition [-fpermissive]

哪种解释是正确的?

最佳答案

clang 是正确的。看起来 gcc 团队中有人误读或错误实现了:

7.1.5/1:

If any declaration of a function or function template has constexpr specifier, then all its declarations shall contain the constexpr specifier.

Foo::kVal 显然不是函数或函数模板。我在标准中没有看到任何其他要求使用 constexpr 来使一个声明与下一个声明保持一致。

关于c++ - 错误 : redeclaration differs in ‘constexpr’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com