diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2020-07-07 23:26:38 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-07-07 23:36:29 +0100 |
commit | eb04805be4029716e76532babc0fa9ecb18de96e (patch) | |
tree | 2a687b02ebaf35e79aa22184e9d39e1b7b9e9156 /libstdc++-v3/include/std/utility | |
parent | 9ca8fefeb720c8a9dec58e9a99042e6727309251 (diff) | |
download | gcc-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/utility | 12 |
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 |