在类定义中初始化的静态整型数据成员可以声明为const
或constexpr
,但在类定义中初始化的非整型静态数据成员必须是constexpr
:
class MyClass {
static const int w = 5; // okay
static constexpr int x = 5; // okay
static const float y = 1.5; // error!
static constexpr float z = 1.5; // okay
};
有人知道为什么不允许声明 y 吗?标准中使其非法的部分是 9.4.2/3,但为什么它是非法的?