'constexprの' は異なるが、GCCは、それを拒否:エラー:再宣言は、クランは、このコードを受け入れる
class Foo {
public:
static constexpr double kVal = 0.25f;
};
const double Foo::kVal;
解釈がある
~$ 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]
(打ち鳴らす3.0とg ++ 4.6.3を使用)正しい?
関数宣言の場合、clangとgccの両方がエラーを返します。 –
@ JoshLee:それは関数にとって必須なので、ルールは変数には適用されないからです。しかし、私は個人的にそれらの間の一貫性を好むでしょう。 –