This is a bug, and it seems to be already reported.
In-class static member initialization
-
09-10-2022 - |
Question
Given
struct X {};
constexpr auto x = X{};
struct S {
static constexpr auto& rx = x;
};
gcc 4.8 says
error: non-constant in-class initialization invalid for static member 'S::rx'
static constexpr auto& rx = x;
^
error: (an out of class initialization is required)
error: 'S::rx' cannot be initialized by a non-constant expression when being declared
I expect x
to be a constant expression, suitable for such initialization. Is this a gcc bug? If not, what is going on here?
No correct solution
OTHER TIPS
You may do the below instead:
struct X {};
const auto x = X{};
struct S {
static constexpr auto& rx = x;
};
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow