![]() Fix __bitop_unsigned_integer and rename to __libcpp_is_unsigned_integer. There are only five unsigned integer types, so we should just list them out. Also provide `__libcpp_is_signed_integer`, even though the Standard doesn't consume that trait anywhere yet. Notice that `concept uniform_random_bit_generator` is specifically specified to rely on `concept unsigned_integral` and *not* `__is_unsigned_integer`. Instantiating `std::ranges::sample` with a type `U` satisfying `uniform_random_bit_generator` where `unsigned_integral<U::result_type>` and not `__is_unsigned_integer<U::result_type>` is simply IFNDR. Orthogonally, fix an undefined behavior in std::countr_zero(__uint128_t). Orthogonally, improve tests for the <bit> manipulation functions. It was these new tests that detected the bug in countr_zero. Differential Revision: https://reviews.llvm.org/D102328 |
||
---|---|---|
.. | ||
bit.endian | ||
bit.pow.two | ||
bitops.count | ||
bitops.rot |