Это действительный код:
struct S {
constexpr S(int x, int y): xVal(x), yVal(y) {}
constexpr S(int x): xVal(x) {}
constexpr S() {}
const int xVal { 0 };
const int yVal { 0 };
};
Но здесь я бы очень хотел объявить xVal
и yVal
constexpr
- вот так:
struct S {
constexpr S(int x, int y): xVal(x), yVal(y) {}
constexpr S(int x): xVal(x) {}
constexpr S() {}
constexpr int xVal { 0 }; // error!
constexpr int yVal { 0 }; // error!
};
Как указано, код не будет компилироваться. Причина в том, что (на 7.1.5/1), только статические члены данных могут быть объявлены constexpr
. Но почему?