From nobody Sat Apr 25 14:18:38 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g2sPp4Xxrz6bZ4R for ; Sat, 25 Apr 2026 14:18:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g2sPp2Prhz3F9D for ; Sat, 25 Apr 2026 14:18:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777126718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+EI8OJ/9b06R190hTlCpsZatw70F6hSpcyLzujvwAOc=; b=uGW3MA354cnYAr5gk0CJxcxNfENpa7/V/BnvUx3dpM5bmWLHR6TK0yDoRlpLiF2kQ5nfGH D0a81xSMOxUz+MlBFEQJwa9RHt9ZzLEi1sMj600mu+hbDr8rfXZEltflWva1kBg8YpTRvf /X2xkFHOIxLGdtIEiQVwG/Oo3Gv8IAQoMcD5hMFqbBIFupi02CtebNfvG4lpnyjvN/NSqh Iz7FgAcYxT5Twd0dMfHyUDvoaTPRTEDC0Jd509Yg7c3Pf1v6mBfcIbRE4/6b1zcSIhWsfh DYyCTrlZbBeYZb3VR+UMd0W98KI99/MTyyGbBqxfBtFi7vKxg+Jb0x+B4oozgg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777126718; a=rsa-sha256; cv=none; b=SzbIR3ApSibcN8lej6y3CIs5k0PGtzeZivJ1rghTWnPPP0RG6KuCvQHQFlCD08p6xd/eN1 u8IWxNXQAkbHx3w8UOiuvMjP/PVhQGzTHgJXtxZwYRyjHye60CSage/qOXleoCgC1vwTHL ZObCIG/eStNZ2DHMsaLllCk4bJwLxFwVtF753Q3XWrpfg6HW7vDiYL18Tw3v9j6C/4IrVn DuDgmYJaEhvd1M853jv1N+5ElMGKcKhB+UMnubpPL9wmEUGdSY2qbXEJ7TY8EAIZRNZzfi Bf8LE80QPAARbCh+hgrIm3o/ZqaNd/EqrEWA1OqKRCDb3FLUHjqQJVojEdYYKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777126718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+EI8OJ/9b06R190hTlCpsZatw70F6hSpcyLzujvwAOc=; b=XE0hZjTvvfz0s0Xca0HtXtI17yHLI7fuKqWAwWTk2clz99kPPJIXyYoGi/g4SoIrKmhjUw uoe0lR52HvP0Ss9aNfkilBpBIk4ECMUMvI8HTbtwZmpqFdkSn7mbqE5CH9PLO70zqCvsvF kdSiqhOrGa4pI/CYPjDCOZq8JtkRCggExuLrrTrLEZKgFR6zmcJM8WHj3/UH/J4eV/7wDe u+/cbnMyHJj/hjyNAMAUm99dJykCjlQb79yClmkNnekJc4GDGBQbnVIM/fFd5hadBZY1k9 lMmWqV2y0AIfSGVGfNsUm1Sb/1y1oYXX7LwHtOiIlP81NHfgESWNzWwoWHEBIQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2sPp1v8jzdFq for ; Sat, 25 Apr 2026 14:18:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 380de by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 25 Apr 2026 14:18:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: 501871ebf9d7 - main - Revert "libcxx-compat: revert llvmorg-19-init-17473-g69fecaa1a455:" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 501871ebf9d725ab1c6fb2c4da9bac77f60b37a7 Auto-Submitted: auto-generated Date: Sat, 25 Apr 2026 14:18:38 +0000 Message-Id: <69eccd3e.380de.7eb30b71@gitrepo.freebsd.org> The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=501871ebf9d725ab1c6fb2c4da9bac77f60b37a7 commit 501871ebf9d725ab1c6fb2c4da9bac77f60b37a7 Author: Dimitry Andric AuthorDate: 2025-12-06 20:24:15 +0000 Commit: Dimitry Andric CommitDate: 2026-04-25 14:07:42 +0000 Revert "libcxx-compat: revert llvmorg-19-init-17473-g69fecaa1a455:" This reverts commit cab3680acf8e6ea40c686d4f26db4429e26a5331, in preparation for merging llvm 21. PR: 292067 MFC after: 1 month --- contrib/llvm-project/libcxx/include/__config | 58 ++++++-------------- .../libcxx/include/__tuple/tuple_element.h | 26 --------- .../libcxx/include/__type_traits/is_function.h | 14 +---- .../__type_traits/is_member_function_pointer.h | 31 ----------- .../__type_traits/is_member_object_pointer.h | 15 ------ .../include/__type_traits/is_member_pointer.h | 16 ------ .../__type_traits/is_nothrow_constructible.h | 61 ---------------------- .../libcxx/include/__type_traits/is_object.h | 25 +-------- .../libcxx/include/__type_traits/is_reference.h | 29 ++++------ .../libcxx/include/__type_traits/is_scoped_enum.h | 22 -------- 10 files changed, 31 insertions(+), 266 deletions(-) diff --git a/contrib/llvm-project/libcxx/include/__config b/contrib/llvm-project/libcxx/include/__config index 8c83cb9abad0..5d93f42d179c 100644 --- a/contrib/llvm-project/libcxx/include/__config +++ b/contrib/llvm-project/libcxx/include/__config @@ -162,16 +162,6 @@ _LIBCPP_HARDENING_MODE_DEBUG # define _LIBCPP_CXX03_LANG # endif -// TODO: Remove once we switch to GCC 14 -# ifndef __has_extension -# define __has_extension(__x) 0 -# endif - -// TODO: Remove once we switch to GCC 14 -# ifndef __has_feature -# define __has_feature(__x) 0 -# endif - # ifndef __has_constexpr_builtin # define __has_constexpr_builtin(x) 0 # endif @@ -348,44 +338,30 @@ typedef __char32_t char32_t; # define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp) -# if defined(_LIBCPP_COMPILER_CLANG_BASED) - // Objective-C++ features (opt-in) -# if __has_feature(objc_arc) -# define _LIBCPP_HAS_OBJC_ARC -# endif - -# if __has_feature(objc_arc_weak) -# define _LIBCPP_HAS_OBJC_ARC_WEAK -# endif - -# if __has_extension(blocks) -# define _LIBCPP_HAS_EXTENSION_BLOCKS -# endif - -# if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__) -# define _LIBCPP_HAS_BLOCKS_RUNTIME -# endif - -# if !__has_feature(address_sanitizer) -# define _LIBCPP_HAS_NO_ASAN -# endif - -# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) +# if __has_feature(objc_arc) +# define _LIBCPP_HAS_OBJC_ARC +# endif -# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ +# if __has_feature(objc_arc_weak) +# define _LIBCPP_HAS_OBJC_ARC_WEAK +# endif -# elif defined(_LIBCPP_COMPILER_GCC) +# if __has_extension(blocks) +# define _LIBCPP_HAS_EXTENSION_BLOCKS +# endif -# if !defined(__SANITIZE_ADDRESS__) -# define _LIBCPP_HAS_NO_ASAN -# endif +# if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__) +# define _LIBCPP_HAS_BLOCKS_RUNTIME +# endif -# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) +# if !__has_feature(address_sanitizer) +# define _LIBCPP_HAS_NO_ASAN +# endif -# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ +# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) -# endif // _LIBCPP_COMPILER_[CLANG|GCC] +# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ # if defined(_LIBCPP_OBJECT_FORMAT_COFF) diff --git a/contrib/llvm-project/libcxx/include/__tuple/tuple_element.h b/contrib/llvm-project/libcxx/include/__tuple/tuple_element.h index 55b3b47619f6..9127c47dc8f1 100644 --- a/contrib/llvm-project/libcxx/include/__tuple/tuple_element.h +++ b/contrib/llvm-project/libcxx/include/__tuple/tuple_element.h @@ -40,32 +40,6 @@ struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> { #ifndef _LIBCPP_CXX03_LANG -# if !__has_builtin(__type_pack_element) - -namespace __indexer_detail { - -template -struct __indexed { - using type _LIBCPP_NODEBUG = _Tp; -}; - -template -struct __indexer; - -template -struct __indexer<__tuple_types<_Types...>, __tuple_indices<_Idx...>> : __indexed<_Idx, _Types>... {}; - -template -__indexed<_Idx, _Tp> __at_index(__indexed<_Idx, _Tp> const&); - -} // namespace __indexer_detail - -template -using __type_pack_element _LIBCPP_NODEBUG = typename decltype(__indexer_detail::__at_index<_Idx>( - __indexer_detail::__indexer< __tuple_types<_Types...>, - typename __make_tuple_indices::type >{}))::type; -# endif - template struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...> > { static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range"); diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_function.h b/contrib/llvm-project/libcxx/include/__type_traits/is_function.h index f09f19adf4aa..98fedd0ad96d 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_function.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_function.h @@ -11,8 +11,6 @@ #include <__config> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_const.h> -#include <__type_traits/is_reference.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -20,22 +18,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__is_function) - template struct _LIBCPP_TEMPLATE_VIS is_function : integral_constant {}; -#else - -template -struct _LIBCPP_TEMPLATE_VIS is_function - : public integral_constant::value || is_const::value)> {}; - -#endif // __has_builtin(__is_function) - #if _LIBCPP_STD_VER >= 17 template -inline constexpr bool is_function_v = is_function<_Tp>::value; +inline constexpr bool is_function_v = __is_function(_Tp); #endif _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_member_function_pointer.h b/contrib/llvm-project/libcxx/include/__type_traits/is_member_function_pointer.h index 11c8a00c9975..037d5ca04ab0 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_member_function_pointer.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_member_function_pointer.h @@ -11,9 +11,6 @@ #include <__config> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_function.h> -#include <__type_traits/remove_cv.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -21,21 +18,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template -struct __libcpp_is_member_pointer { - enum { __is_member = false, __is_func = false, __is_obj = false }; -}; -template -struct __libcpp_is_member_pointer<_Tp _Up::*> { - enum { - __is_member = true, - __is_func = is_function<_Tp>::value, - __is_obj = !__is_func, - }; -}; - -#if __has_builtin(__is_member_function_pointer) - template struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer : _BoolConstant<__is_member_function_pointer(_Tp)> {}; @@ -44,19 +26,6 @@ template inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp); # endif -#else // __has_builtin(__is_member_function_pointer) - -template -struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer - : public _BoolConstant<__libcpp_is_member_pointer<__remove_cv_t<_Tp> >::__is_func> {}; - -# if _LIBCPP_STD_VER >= 17 -template -inline constexpr bool is_member_function_pointer_v = is_member_function_pointer<_Tp>::value; -# endif - -#endif // __has_builtin(__is_member_function_pointer) - _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_member_object_pointer.h b/contrib/llvm-project/libcxx/include/__type_traits/is_member_object_pointer.h index 9141f9da530f..555794bfe038 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_member_object_pointer.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_member_object_pointer.h @@ -18,8 +18,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__is_member_object_pointer) - template struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer : _BoolConstant<__is_member_object_pointer(_Tp)> {}; @@ -28,19 +26,6 @@ template inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp); # endif -#else // __has_builtin(__is_member_object_pointer) - -template -struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer - : public _BoolConstant<__libcpp_is_member_pointer<__remove_cv_t<_Tp> >::__is_obj> {}; - -# if _LIBCPP_STD_VER >= 17 -template -inline constexpr bool is_member_object_pointer_v = is_member_object_pointer<_Tp>::value; -# endif - -#endif // __has_builtin(__is_member_object_pointer) - _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_member_pointer.h b/contrib/llvm-project/libcxx/include/__type_traits/is_member_pointer.h index 4ca01d1c2fc8..149634fde758 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_member_pointer.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_member_pointer.h @@ -11,7 +11,6 @@ #include <__config> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_member_function_pointer.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -19,8 +18,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__is_member_pointer) - template struct _LIBCPP_TEMPLATE_VIS is_member_pointer : _BoolConstant<__is_member_pointer(_Tp)> {}; @@ -29,19 +26,6 @@ template inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp); # endif -#else // __has_builtin(__is_member_pointer) - -template -struct _LIBCPP_TEMPLATE_VIS is_member_pointer - : public _BoolConstant<__libcpp_is_member_pointer<__remove_cv_t<_Tp> >::__is_member> {}; - -# if _LIBCPP_STD_VER >= 17 -template -inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; -# endif - -#endif // __has_builtin(__is_member_pointer) - _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___TYPE_TRAITS_IS_MEMBER_POINTER_H diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_nothrow_constructible.h b/contrib/llvm-project/libcxx/include/__type_traits/is_nothrow_constructible.h index 2f7ed8487e76..58d2b2475140 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_nothrow_constructible.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_nothrow_constructible.h @@ -13,10 +13,6 @@ #include <__type_traits/add_lvalue_reference.h> #include <__type_traits/add_rvalue_reference.h> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_constructible.h> -#include <__type_traits/is_reference.h> -#include <__utility/declval.h> -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -24,85 +20,28 @@ _LIBCPP_BEGIN_NAMESPACE_STD -// GCC is disabled due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106611 -#if __has_builtin(__is_nothrow_constructible) && !defined(_LIBCPP_COMPILER_GCC) - template < class _Tp, class... _Args> struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible : public integral_constant {}; -#else - -template -struct __libcpp_is_nothrow_constructible; - -template -struct __libcpp_is_nothrow_constructible - : public integral_constant()...))> {}; - -template -void __implicit_conversion_to(_Tp) noexcept {} - -template -struct __libcpp_is_nothrow_constructible - : public integral_constant(std::declval<_Arg>()))> {}; - -template -struct __libcpp_is_nothrow_constructible : public false_type { -}; - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible - : __libcpp_is_nothrow_constructible::value, - is_reference<_Tp>::value, - _Tp, - _Args...> {}; - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp[_Ns]> - : __libcpp_is_nothrow_constructible::value, is_reference<_Tp>::value, _Tp> {}; - -#endif // __has_builtin(__is_nothrow_constructible) #if _LIBCPP_STD_VER >= 17 template inline constexpr bool is_nothrow_constructible_v = is_nothrow_constructible<_Tp, _Args...>::value; #endif -// TODO: remove this implementation once https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106611 is fixed -#ifdef _LIBCPP_COMPILER_GCC - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_constructible - : public is_nothrow_constructible<_Tp, __add_lvalue_reference_t > {}; - -#else // _LIBCPP_COMPILER_GCC - template struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_constructible : public integral_constant< bool, __is_nothrow_constructible(_Tp, __add_lvalue_reference_t)> {}; -#endif // _LIBCPP_COMPILER_GCC - #if _LIBCPP_STD_VER >= 17 template inline constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible<_Tp>::value; #endif -// TODO: remove this implementation once https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106611 is fixed -#ifndef _LIBCPP_COMPILER_GCC - template struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_constructible : public integral_constant)> {}; -#else // _LIBCPP_COMPILER_GCC - -template -struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_constructible - : public is_nothrow_constructible<_Tp, __add_rvalue_reference_t<_Tp> > {}; - -#endif // _LIBCPP_COMPILER_GCC - #if _LIBCPP_STD_VER >= 17 template inline constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible<_Tp>::value; diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_object.h b/contrib/llvm-project/libcxx/include/__type_traits/is_object.h index 5ac1d854a695..ec04508402ce 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_object.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_object.h @@ -11,10 +11,6 @@ #include <__config> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_array.h> -#include <__type_traits/is_class.h> -#include <__type_traits/is_scalar.h> -#include <__type_traits/is_union.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -22,30 +18,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__is_object) - template struct _LIBCPP_TEMPLATE_VIS is_object : _BoolConstant<__is_object(_Tp)> {}; -# if _LIBCPP_STD_VER >= 17 +#if _LIBCPP_STD_VER >= 17 template inline constexpr bool is_object_v = __is_object(_Tp); -# endif - -#else // __has_builtin(__is_object) - -template -struct _LIBCPP_TEMPLATE_VIS is_object - : public integral_constant::value || is_array<_Tp>::value || is_union<_Tp>::value || - is_class<_Tp>::value > {}; - -# if _LIBCPP_STD_VER >= 17 -template -inline constexpr bool is_object_v = is_object<_Tp>::value; -# endif - -#endif // __has_builtin(__is_object) +#endif _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_reference.h b/contrib/llvm-project/libcxx/include/__type_traits/is_reference.h index 42853d479039..cc157a438e49 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_reference.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_reference.h @@ -18,27 +18,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if __has_builtin(__is_lvalue_reference) && __has_builtin(__is_rvalue_reference) && __has_builtin(__is_reference) +template +struct _LIBCPP_TEMPLATE_VIS is_reference : _BoolConstant<__is_reference(_Tp)> {}; +#if _LIBCPP_STD_VER >= 17 template -struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> {}; +inline constexpr bool is_reference_v = __is_reference(_Tp); +#endif + +#if __has_builtin(__is_lvalue_reference) && __has_builtin(__is_rvalue_reference) template -struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference : _BoolConstant<__is_rvalue_reference(_Tp)> {}; +struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> {}; template -struct _LIBCPP_TEMPLATE_VIS is_reference : _BoolConstant<__is_reference(_Tp)> {}; +struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference : _BoolConstant<__is_rvalue_reference(_Tp)> {}; # if _LIBCPP_STD_VER >= 17 template -inline constexpr bool is_reference_v = __is_reference(_Tp); -template inline constexpr bool is_lvalue_reference_v = __is_lvalue_reference(_Tp); template inline constexpr bool is_rvalue_reference_v = __is_rvalue_reference(_Tp); # endif -#else // __has_builtin(__is_lvalue_reference) && etc... +#else // __has_builtin(__is_lvalue_reference) template struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {}; @@ -50,17 +53,7 @@ struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference : public false_type {}; template struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference<_Tp&&> : public true_type {}; -template -struct _LIBCPP_TEMPLATE_VIS is_reference : public false_type {}; -template -struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&> : public true_type {}; -template -struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&&> : public true_type {}; - # if _LIBCPP_STD_VER >= 17 -template -inline constexpr bool is_reference_v = is_reference<_Tp>::value; - template inline constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value; @@ -68,7 +61,7 @@ template inline constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value; # endif -#endif // __has_builtin(__is_lvalue_reference) && etc... +#endif // __has_builtin(__is_lvalue_reference) _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/llvm-project/libcxx/include/__type_traits/is_scoped_enum.h b/contrib/llvm-project/libcxx/include/__type_traits/is_scoped_enum.h index 1db88e13356e..cb3e25cf5733 100644 --- a/contrib/llvm-project/libcxx/include/__type_traits/is_scoped_enum.h +++ b/contrib/llvm-project/libcxx/include/__type_traits/is_scoped_enum.h @@ -11,9 +11,6 @@ #include <__config> #include <__type_traits/integral_constant.h> -#include <__type_traits/is_convertible.h> -#include <__type_traits/is_enum.h> -#include <__type_traits/underlying_type.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -23,31 +20,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 23 -// TODO: GCC and Clang both have this builtin. Remove the false case once we've updated to GCC 14. -# if __has_builtin(__is_scoped_enum) - template struct _LIBCPP_TEMPLATE_VIS is_scoped_enum : bool_constant<__is_scoped_enum(_Tp)> {}; template inline constexpr bool is_scoped_enum_v = __is_scoped_enum(_Tp); -# else - -template > -struct __is_scoped_enum_helper : false_type {}; - -template -struct __is_scoped_enum_helper<_Tp, true> : public bool_constant > > {}; - -template -struct _LIBCPP_TEMPLATE_VIS is_scoped_enum : public __is_scoped_enum_helper<_Tp> {}; - -template -inline constexpr bool is_scoped_enum_v = is_scoped_enum<_Tp>::value; - -# endif // __has_builtin(__is_scoped_enum) - #endif // _LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD