我有以下代码:
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
?