[libcxx-commits] [libcxx] [libc++] Remove is_signed<T> use from <limits> (PR #168334)
via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Nov 19 09:51:09 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
`numeric_limits` already has an `is_signed` member. We can use that instead of using `std::is_signed`.
---
Full diff: https://github.com/llvm/llvm-project/pull/168334.diff
13 Files Affected:
- (modified) libcxx/include/__charconv/from_chars_integral.h (+1-1)
- (modified) libcxx/include/__charconv/to_chars_integral.h (+1)
- (modified) libcxx/include/__locale_dir/num.h (+1)
- (modified) libcxx/include/__mdspan/extents.h (+1)
- (modified) libcxx/include/limits (+1-2)
- (modified) libcxx/test/libcxx/numerics/clamp_to_integral.pass.cpp (+1)
- (modified) libcxx/test/std/numerics/c.math/isnormal.pass.cpp (+1)
- (modified) libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp (+1)
- (modified) libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp (+1)
- (modified) libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp (+1)
- (modified) libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp (+1)
- (modified) libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp (+1)
- (modified) libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp (+1)
``````````diff
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;
diff --git a/libcxx/test/libcxx/numerics/clamp_to_integral.pass.cpp b/libcxx/test/libcxx/numerics/clamp_to_integral.pass.cpp
index aed78f9cddf84..937593ca48f74 100644
--- a/libcxx/test/libcxx/numerics/clamp_to_integral.pass.cpp
+++ b/libcxx/test/libcxx/numerics/clamp_to_integral.pass.cpp
@@ -16,6 +16,7 @@
#include <cassert>
#include <cmath>
#include <limits>
+#include <type_traits>
template <class IntT>
void test() {
diff --git a/libcxx/test/std/numerics/c.math/isnormal.pass.cpp b/libcxx/test/std/numerics/c.math/isnormal.pass.cpp
index 76c3d13520d99..79465b3122d1b 100644
--- a/libcxx/test/std/numerics/c.math/isnormal.pass.cpp
+++ b/libcxx/test/std/numerics/c.math/isnormal.pass.cpp
@@ -14,6 +14,7 @@
#include <cassert>
#include <cmath>
#include <limits>
+#include <type_traits>
#include "test_macros.h"
#include "type_algorithms.h"
diff --git a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
index 006ad9a2d243e..fea70a304dfdd 100644
--- a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
@@ -32,6 +32,7 @@
#include <chrono>
#include <concepts>
#include <ratio>
+#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
index a7123bc3e0b5c..6499ecb5fb85e 100644
--- a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
@@ -32,6 +32,7 @@
#include <chrono>
#include <concepts>
#include <ratio>
+#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
index 8cb3d78d97f52..c69671ba4d2cc 100644
--- a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
@@ -32,6 +32,7 @@
#include <concepts>
#include <chrono>
#include <ratio>
+#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp
index 8b69ec6369256..f261166146e7e 100644
--- a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp
+++ b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp
@@ -17,6 +17,7 @@
#include <numeric>
#include <tuple>
#include <cassert>
+#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp
index 2cc66ebc067be..5a07835f5598c 100644
--- a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp
+++ b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp
@@ -18,6 +18,7 @@
#include <numeric>
#include <tuple>
#include <cassert>
+#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp
index fb4698015b9da..079a2f7df80cc 100644
--- a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp
+++ b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp
@@ -17,6 +17,7 @@
#include <numeric>
#include <tuple>
#include <cassert>
+#include <type_traits>
#include "test_macros.h"
``````````
</details>
https://github.com/llvm/llvm-project/pull/168334
More information about the libcxx-commits
mailing list