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