【发布时间】:2017-03-10 19:49:04
【问题描述】:
为什么我在第 2 行和第 3 行(见下文)中出现编译器错误,而不是第一行?
struct X {
static constexpr const char* f1 = "f1"; // ok
static const char* f2 = "f2"; // error
static const std::string f3 = "f3"; // error
};
【问题讨论】:
为什么我在第 2 行和第 3 行(见下文)中出现编译器错误,而不是第一行?
struct X {
static constexpr const char* f1 = "f1"; // ok
static const char* f2 = "f2"; // error
static const std::string f3 = "f3"; // error
};
【问题讨论】:
constexpr 需要立即初始化或构造,以及同一命名空间内翻译单元中的其他静态成员。
const std::string X::f3 = "f3";
【讨论】: