[libcxx-commits] [libcxx] [libc++][NFC] Move __libcpp_is_integral into the else branch (PR #142556)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Jun 3 00:46:30 PDT 2025
https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/142556
This makes it clear that `__libcpp_is_integral` is an implementation detail of `is_integral` if we don't have `__is_integral` and not its own utility.
>From 37c6c95cffe3f454f589527b36d8d6ec187fb0cd Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Tue, 3 Jun 2025 09:44:50 +0200
Subject: [PATCH] [libc++][NFC] Move __libcpp_is_integral into the else branch
---
libcxx/include/__type_traits/is_integral.h | 24 +++++++++++-----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/libcxx/include/__type_traits/is_integral.h b/libcxx/include/__type_traits/is_integral.h
index 7f7ac26beb770..5a340965f0384 100644
--- a/libcxx/include/__type_traits/is_integral.h
+++ b/libcxx/include/__type_traits/is_integral.h
@@ -19,6 +19,18 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+#if __has_builtin(__is_integral)
+
+template <class _Tp>
+struct _LIBCPP_NO_SPECIALIZATIONS is_integral : _BoolConstant<__is_integral(_Tp)> {};
+
+# if _LIBCPP_STD_VER >= 17
+template <class _Tp>
+_LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_integral_v = __is_integral(_Tp);
+# endif
+
+#else
+
// clang-format off
template <class _Tp> struct __libcpp_is_integral { enum { value = 0 }; };
template <> struct __libcpp_is_integral<bool> { enum { value = 1 }; };
@@ -47,18 +59,6 @@ template <> struct __libcpp_is_integral<__uint128_t> { enum { va
#endif
// clang-format on
-#if __has_builtin(__is_integral)
-
-template <class _Tp>
-struct _LIBCPP_NO_SPECIALIZATIONS is_integral : _BoolConstant<__is_integral(_Tp)> {};
-
-# if _LIBCPP_STD_VER >= 17
-template <class _Tp>
-_LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_integral_v = __is_integral(_Tp);
-# endif
-
-#else
-
template <class _Tp>
struct is_integral : public _BoolConstant<__libcpp_is_integral<__remove_cv_t<_Tp> >::value> {};
More information about the libcxx-commits
mailing list