aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-07-16 13:39:25 +0100
committerJonathan Wakely <jwakely@redhat.com>2021-07-16 15:03:03 +0100
commit95891ca020591196cde50c4cde4cab14783a3c00 (patch)
treee668fe619f03b50644bde3b0d00e894b09e1e4d6
parent42167831ab1f3cd61f02a22dfb0e87333073c5ca (diff)
downloadgcc-95891ca020591196cde50c4cde4cab14783a3c00.zip
gcc-95891ca020591196cde50c4cde4cab14783a3c00.tar.gz
gcc-95891ca020591196cde50c4cde4cab14783a3c00.tar.bz2
libstdc++: Modernize <bits/random.h> helpers
Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: * include/bits/random.h (_Shift::__value): Use constexpr. (_Select_uint_least_t::type): Use using-declaration. (_Mod): Likewise. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line number.
-rw-r--r--libstdc++-v3/include/bits/random.h21
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc2
2 files changed, 13 insertions, 10 deletions
diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index 6d0e154..c5cae87 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -68,11 +68,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
bool = __w < static_cast<size_t>
(std::numeric_limits<_UIntType>::digits)>
struct _Shift
- { static const _UIntType __value = 0; };
+ { static constexpr _UIntType __value = 0; };
template<typename _UIntType, size_t __w>
struct _Shift<_UIntType, __w, true>
- { static const _UIntType __value = _UIntType(1) << __w; };
+ { static constexpr _UIntType __value = _UIntType(1) << __w; };
template<int __s,
int __which = ((__s <= __CHAR_BIT__ * sizeof (int))
@@ -88,20 +88,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<int __s>
struct _Select_uint_least_t<__s, 4>
- { typedef unsigned int type; };
+ { using type = unsigned int; };
template<int __s>
struct _Select_uint_least_t<__s, 3>
- { typedef unsigned long type; };
+ { using type = unsigned long; };
template<int __s>
struct _Select_uint_least_t<__s, 2>
- { typedef unsigned long long type; };
+ { using type = unsigned long long; };
#if __SIZEOF_INT128__ > __SIZEOF_LONG_LONG__
template<int __s>
struct _Select_uint_least_t<__s, 1>
- { __extension__ typedef unsigned __int128 type; };
+ { __extension__ using type = unsigned __int128; };
#endif
// Assume a != 0, a < m, c < m, x < m.
@@ -111,11 +111,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
bool __schrage_ok = __m % __a < __m / __a>
struct _Mod
{
- typedef typename _Select_uint_least_t<std::__lg(__a)
- + std::__lg(__m) + 2>::type _Tp2;
static _Tp
__calc(_Tp __x)
- { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); }
+ {
+ using _Tp2
+ = typename _Select_uint_least_t<std::__lg(__a)
+ + std::__lg(__m) + 2>::type;
+ return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m);
+ }
};
// Schrage.
diff --git a/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc b/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
index 3ded306..d6e6399 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
@@ -10,6 +10,6 @@ std::__detail::_Adaptor<std::mt19937, unsigned long> aurng(urng);
auto x = std::generate_canonical<std::size_t,
std::numeric_limits<std::size_t>::digits>(urng);
-// { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 166 }
+// { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 169 }
// { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3350 }