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

Reply via email to