On 12/18/25 4:42 AM, Jonathan Wakely wrote:
Make use of __detail::_Select_uint_least_t<d>::type for
std::generate_canonical, so that we choose an appropriately sized
integer based on the number of bits needed, and so we have a 128-bit
integer type even on 32-bit targets (via the new __rand_uint128 class).

libstdc++-v3/ChangeLog:

        * include/bits/random.tcc (__generate_canonical_pow2): Adjust
        comments. Remove _UInt template parameter and define it in the
        body using _Select_uint_least_t<__d>. Remove popcount call for
        getting the width of the _UInt type. Cast floating-point
        literal to _RealT.
        (__generate_canonical_any): Remove _UInt template parameter and
        define it in the body using _Select_uint_least_t<__d * 2>. Use
        direct-initialization for _UInt variables. Cast floating-point
        literal to _RealT.
        (generate_canonical): Remove unused typedef. Remove constexpr-if
        branches and remove unsigned type from template argument lists.

Co-authored-by: Jakub Jelinek <[email protected]>

LGTM.

Reply via email to