https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113241
Bug ID: 113241 Summary: [13/14 Regression] Unguarded use of __is_convertible built-in Product: gcc Version: 13.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- In r13-2883-gaf85ad891703db I made this change in <type_traits>: template <typename _Base, typename _Derived> inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); template <typename _From, typename _To> - inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; + inline constexpr bool is_convertible_v = __is_convertible(_From, _To); template<typename _Fn, typename... _Args> inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; template<typename _Fn, typename... _Args> However, that should be guarded by a __has_builtin check, so that it doesn't break older compilers using GCC 13 headers, e.g. Intel icc 2021.8.0 and later on Compiler Explorer, e.g. https://gcc.godbolt.org/z/jWEfEz6bq