http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60333
Bug ID: 60333 Summary: type_traits make_signed, make_unsigned missing support for long long enumerations Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: harald at gigawatt dot nl #include <type_traits> enum E { e = 0x100000000 }; static_assert(sizeof(std::make_signed<E>::type) == sizeof(E), ""); static_assert(sizeof(std::make_unsigned<E>::type) == sizeof(E), ""); This fails on x86, because make_signed and make_unsigned never return a larger type than (un)signed long.