为什么const char * static field必须是constexpr才能在类中初始化它?

时间:2016-01-24 17:54:02

标签: c++ c++11 static-initialization in-class-initialization

我有以下代码:

struct st
{
  static constexpr const int x = 2;
  static constexpr int x2 = 2;
  static const int x3 = 2;
  static const char* str = "BLAH"; // ERROR
};

标记的行给出了以下错误:

  

错误:静态数据的类内初始化需要'constexpr'   成员'const char * st :: str'的非整数类型[-fpermissive]

当我向其添加constexpr时,它就是花花公子。

struct st
{
  // ...
  static constexpr const char* str = "BLAH"; // OK
};

为什么会这样?由于在类体中不允许初始化非普通类型(例如std::string或用户定义的类型),为什么const char*只有constexpr

0 个答案:

没有答案