2

次のコードがあります。

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

4

0 に答える 0