diff --git a/src/common/bit_util.h b/src/common/bit_util.h index eef8c1c5a7..f50d3308a9 100644 --- a/src/common/bit_util.h +++ b/src/common/bit_util.h @@ -45,6 +45,12 @@ template return static_cast(log2_f + static_cast((value ^ (1ULL << log2_f)) != 0ULL)); } +template +requires std::is_unsigned_v +[[nodiscard]] constexpr bool IsPow2(T value) { + return std::has_single_bit(value); +} + template requires std::is_integral_v [[nodiscard]] T NextPow2(T value) {