aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/utility
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-07-07 23:26:38 +0100
committerJonathan Wakely <jwakely@redhat.com>2020-07-07 23:36:29 +0100
commiteb04805be4029716e76532babc0fa9ecb18de96e (patch)
tree2a687b02ebaf35e79aa22184e9d39e1b7b9e9156 /libstdc++-v3/include/std/utility
parent9ca8fefeb720c8a9dec58e9a99042e6727309251 (diff)
downloadgcc-eb04805be4029716e76532babc0fa9ecb18de96e.zip
gcc-eb04805be4029716e76532babc0fa9ecb18de96e.tar.gz
gcc-eb04805be4029716e76532babc0fa9ecb18de96e.tar.bz2
libstdc++: Replace __int_limits with __numeric_traits_integer
I recently added std::__detail::__int_limits as a lightweight alternative to std::numeric_limits, forgetting that the values it provides (digits, min and max) are already provided by __gnu_cxx::__numeric_traits. This change adds __int_traits as an alias for __numeric_traits_integer. This avoids instantiating __numeric_traits to decide whether to use __numeric_traits_integer or __numeric_traits_floating. Then all uses of __int_limits can be replaced with __int_traits, and __int_limits can be removed. libstdc++-v3/ChangeLog: * include/Makefile.am: Remove bits/int_limits.h. * include/Makefile.in: Regenerate. * include/bits/int_limits.h: Removed. * include/bits/parse_numbers.h (_Select_int_base): Replace __int_limits with __int_traits. * include/bits/range_access.h (_SSize::operator()): Likewise. * include/ext/numeric_traits.h (__numeric_traits_integer): Add static assertion. (__int_traits): New alias template. * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) (__countr_zero, __countr_one, __popcount, __bit_ceil) (__bit_floor, __bit_width) Replace __int_limits with __int_traits. * include/std/charconv (__to_chars_8, __from_chars_binary) (__from_chars_alpha_to_num, from_chars): Likewise. * include/std/memory_resource (polymorphic_allocator::allocate) (polymorphic_allocator::allocate_object): Likewise. * include/std/string_view (basic_string_view::_S_compare): Likewise. * include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
Diffstat (limited to 'libstdc++-v3/include/std/utility')
-rw-r--r--libstdc++-v3/include/std/utility12
1 files changed, 6 insertions, 6 deletions
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index cde3752..4a9ad60 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -76,7 +76,7 @@
#include <initializer_list>
#if __cplusplus > 201703L
-#include <bits/int_limits.h>
+#include <ext/numeric_traits.h>
#endif
namespace std _GLIBCXX_VISIBILITY(default)
@@ -456,16 +456,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
static_assert(__is_standard_integer<_Up>::value);
static_assert(__is_standard_integer<_Tp>::value);
- using std::__detail::__int_limits;
+ using __gnu_cxx::__int_traits;
if constexpr (is_signed_v<_Tp> == is_signed_v<_Up>)
- return __int_limits<_Up>::min() <= __t
- && __t <= __int_limits<_Up>::max();
+ return __int_traits<_Up>::__min <= __t
+ && __t <= __int_traits<_Up>::__max;
else if constexpr (is_signed_v<_Tp>)
return __t >= 0
- && make_unsigned_t<_Tp>(__t) <= __int_limits<_Up>::max();
+ && make_unsigned_t<_Tp>(__t) <= __int_traits<_Up>::__max;
else
- return __t <= make_unsigned_t<_Up>(__int_limits<_Up>::max());
+ return __t <= make_unsigned_t<_Up>(__int_traits<_Up>::__max);
}
#endif // C++20
#endif // C++17