commit bfb0586ebdb696efa9e59cb8da1d977c5880653b Author: Jonathan Wakely Date: Fri Jul 16 13:53:05 2021 libstdc++: Simplify numeric_limits<__max_size_type> If __int128 is supported then __int_traits<__int128> is guaranteed to be specialized, so we can remove the preprocessor condition inside the std::numeric_traits<__detail::__max_size_type> specialization. Simply using __int_traits<_Sp::__rep> gives the right answer. Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: * include/bits/max_size_type.h (numeric_limits<__max_size_type>): Use __int_traits unconditionally. diff --git a/libstdc++-v3/include/bits/max_size_type.h b/libstdc++-v3/include/bits/max_size_type.h index 298a929db03..11721b30b61 100644 --- a/libstdc++-v3/include/bits/max_size_type.h +++ b/libstdc++-v3/include/bits/max_size_type.h @@ -771,14 +771,8 @@ namespace ranges static constexpr bool is_signed = false; static constexpr bool is_integer = true; static constexpr bool is_exact = true; -#if __SIZEOF_INT128__ - static_assert(__extension__ same_as<_Sp::__rep, __uint128_t>); - static constexpr int digits = 129; -#else - static_assert(same_as<_Sp::__rep, unsigned long long>); static constexpr int digits - = __gnu_cxx::__int_traits::__digits + 1; -#endif + = __gnu_cxx::__int_traits<_Sp::__rep>::__digits + 1; static constexpr int digits10 = static_cast(digits * numbers::ln2 / numbers::ln10);