Modified patch from upstream commit https://github.com/WebKit/WebKit/commit/654f0c3 to apply on 2.46.5 Original author fujii (Fujii Hironori) --- a/Source/WTF/wtf/EnumTraits.h 2025-07-04 00:55:33.552603416 +0200 +++ b/Source/WTF/wtf/EnumTraits.h 2025-07-04 01:08:04.845970071 +0200 @@ -161,6 +161,16 @@ #pragma clang diagnostic ignored "-Wenum-constexpr-conversion" #endif +#if COMPILER(CLANG) && __clang_major__ >= 16 +template +inline constexpr bool isEnumConstexprStaticCastValid = false; +template +inline constexpr bool isEnumConstexprStaticCastValid(V)>>> = true; +#else +template +inline constexpr bool isEnumConstexprStaticCastValid = true; +#endif + template constexpr std::span enumTypeNameImpl() { @@ -224,6 +234,16 @@ return result; } +template +constexpr std::span enumName() +{ + if constexpr (isEnumConstexprStaticCastValid) + return enumName(V)>(); + else + return { }; +} + + namespace detail { template @@ -243,7 +263,7 @@ std::array, limit> names; detail::forConstexpr<0, limit>([&] (auto i) { - names[i] = enumName(static_cast(i))>(); + names[i] = enumName(i)>(); }); return names; }