Элементы статического интегрального элемента, инициализированные в определении класса, могут быть объявлены 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, но почему это незаконно?