エラー私が期待しているだろう:ミキシングconstexprの宣言と定数が定義さ
GCC 4.8:
in.cpp:6:19: error: redeclaration ‘Foo::s’ differs in ‘constexpr’
const char Foo::s[];
^
in.cpp:3:27: error: from previous declaration ‘Foo::s’
static constexpr char s[] = "Hello world";
^
in.cpp:6:19: error: declaration of ‘constexpr const char Foo::s [12]’ outside of class is not definition [-fpermissive]
const char Foo::s[];
GCC 6.0:
‘constexpr’ needed for in-class initialization of static data member ‘const char Foo::s [12]’ of non-integral type [-fpermissive]
私はconstexpr
とconst
を混合話し合うようだthis old questionを見つけたが、それは初期化子ではなく定義と宣言はconst性に関しては異なることができるかどうかに、定数式であるかどうかに焦点を当てて。
constexpr T
静的データメンバーの定義をconst T
として指定することはできますか?
[なぜGCCはconstexpr静的データメンバーの定義にconstexprとマークする必要があると思うのですか?](0120-18753-1708801) –
@ShafikYaghmour:ありがとう、面白い。 GCCエラーメッセージがより混乱しているようです。 4.8では、標準と矛盾していますが、一貫していますが、新しいエラーメッセージはあいまいです。 –