https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79118

--- Comment #8 from Niall Douglas <s_gccbugzilla at nedprod dot com> ---
(In reply to Marek Polacek from comment #7)
> I'm giving up; there's just too much C++.

Thanks for looking into it. You should know that the above code works without
issue on clang and VS2017 (with C++ 14 constexpr enabled too!).

In your reduced test case I don't think you're packing the storage and the type
of storage into a single byte. That's what the original does, and appears to be
the cause of the ICE on GCC: use of bitfields in constexpr. It certainly should
not be the case that the constexpr is accessing storage not initialised by
constexpr e.g. a bit 8 when valid bits are 0 ... 7.

Niall

Reply via email to