[libcxx-commits] [libcxx] [libc++] Remove is_signed<T> use from <limits> (PR #168334)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Nov 17 06:11:27 PST 2025
https://github.com/philnik777 updated https://github.com/llvm/llvm-project/pull/168334
>From 09d72f35ccc23a2496c6c8ad35f18947e527a77f Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Sat, 15 Nov 2025 09:52:48 +0100
Subject: [PATCH] [libc++] Remove is_signed<T> use from <limits>
---
libcxx/include/__charconv/from_chars_integral.h | 2 +-
libcxx/include/__charconv/to_chars_integral.h | 1 +
libcxx/include/__locale_dir/num.h | 1 +
libcxx/include/__mdspan/extents.h | 1 +
libcxx/include/limits | 3 +--
5 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/libcxx/include/__charconv/from_chars_integral.h b/libcxx/include/__charconv/from_chars_integral.h
index c1f033b37b913..903e892cab85b 100644
--- a/libcxx/include/__charconv/from_chars_integral.h
+++ b/libcxx/include/__charconv/from_chars_integral.h
@@ -18,8 +18,8 @@
#include <__memory/addressof.h>
#include <__system_error/errc.h>
#include <__type_traits/enable_if.h>
-#include <__type_traits/integral_constant.h>
#include <__type_traits/is_integral.h>
+#include <__type_traits/is_signed.h>
#include <__type_traits/is_unsigned.h>
#include <__type_traits/make_unsigned.h>
#include <limits>
diff --git a/libcxx/include/__charconv/to_chars_integral.h b/libcxx/include/__charconv/to_chars_integral.h
index f10cc3566875a..6d425139260b6 100644
--- a/libcxx/include/__charconv/to_chars_integral.h
+++ b/libcxx/include/__charconv/to_chars_integral.h
@@ -24,6 +24,7 @@
#include <__type_traits/integral_constant.h>
#include <__type_traits/is_integral.h>
#include <__type_traits/is_same.h>
+#include <__type_traits/is_signed.h>
#include <__type_traits/make_32_64_or_128_bit.h>
#include <__type_traits/make_unsigned.h>
#include <__utility/unreachable.h>
diff --git a/libcxx/include/__locale_dir/num.h b/libcxx/include/__locale_dir/num.h
index e31a63d040f7a..6eef9b3095d6e 100644
--- a/libcxx/include/__locale_dir/num.h
+++ b/libcxx/include/__locale_dir/num.h
@@ -23,6 +23,7 @@
#include <__locale_dir/scan_keyword.h>
#include <__memory/unique_ptr.h>
#include <__system_error/errc.h>
+#include <__type_traits/is_signed.h>
#include <cerrno>
#include <ios>
#include <streambuf>
diff --git a/libcxx/include/__mdspan/extents.h b/libcxx/include/__mdspan/extents.h
index 99b54badf893c..26219557dbae9 100644
--- a/libcxx/include/__mdspan/extents.h
+++ b/libcxx/include/__mdspan/extents.h
@@ -25,6 +25,7 @@
#include <__type_traits/integer_traits.h>
#include <__type_traits/is_convertible.h>
#include <__type_traits/is_nothrow_constructible.h>
+#include <__type_traits/is_signed.h>
#include <__type_traits/make_unsigned.h>
#include <__utility/integer_sequence.h>
#include <__utility/unreachable.h>
diff --git a/libcxx/include/limits b/libcxx/include/limits
index ae93fcd7164fd..ff40d2051d06f 100644
--- a/libcxx/include/limits
+++ b/libcxx/include/limits
@@ -108,7 +108,6 @@ template<> class numeric_limits<cv long double>;
# include <__config>
# include <__type_traits/is_arithmetic.h>
# include <__type_traits/is_same.h>
-# include <__type_traits/is_signed.h>
# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -218,7 +217,7 @@ protected:
static _LIBCPP_CONSTEXPR const bool is_iec559 = false;
static _LIBCPP_CONSTEXPR const bool is_bounded = true;
- static _LIBCPP_CONSTEXPR const bool is_modulo = !std::is_signed<_Tp>::value;
+ static _LIBCPP_CONSTEXPR const bool is_modulo = !is_signed;
# if defined(__i386__) || defined(__x86_64__) || defined(__wasm__)
static _LIBCPP_CONSTEXPR const bool traps = is_same<decltype(+_Tp(0)), _Tp>::value;
More information about the libcxx-commits
mailing list