次のコードがあります。
struct st
{
static constexpr const int x = 2;
static constexpr int x2 = 2;
static const int x3 = 2;
static const char* str = "BLAH"; // ERROR
};
マークされた行は私に次のエラーを与えます:
エラー: 非整数型の静的データ メンバー 'const char* st::str' のクラス内初期化に 'constexpr' が必要です [-fpermissive]
私がそれに追加constexpr
すると、それはすべてダンディです。
struct st
{
// ...
static constexpr const char* str = "BLAH"; // OK
};
なぜこのようになっているのですか?非プレーン タイプ (std::string
またはユーザー定義タイプなど) の初期化はクラス本体で許可されていないためconst char*
、constexpr