https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51312
--- Comment #11 from Paolo Carlini <paolo.carlini at oracle dot com> --- I'm having a look at the issue and it seems rather different than I (we) thought. Suffices to say that it does not affect constexpr non-operator member functions, and that sort-of explains this (ugly) workaround: enum : int { e = X().operator int() }; Also, isn't just about C++11 enums, eg, this should be also accepted: enum { e = X() };