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