// System header for testing that -Wenum-constexpr-conversion leads to an error // when included in user code, or when the system macro is used. enum SystemEnum { a = 0, b = 1, }; void testValueInRangeOfEnumerationValuesInSystemHeader() { constexpr SystemEnum x1 = static_cast(123); // expected-error@-1 {{integer value 123 is outside the valid range of values [0, 1] for the enumeration type 'SystemEnum'}} const SystemEnum x2 = static_cast(123); // ok, not a constant expression context } #define CONSTEXPR_CAST_TO_SYSTEM_ENUM_OUTSIDE_OF_RANGE \ constexpr SystemEnum system_enum = static_cast(123)