diff options
author | Wunkolo <Wunkolo@gmail.com> | 2022-02-23 10:08:32 -0800 |
---|---|---|
committer | Wunkolo <Wunkolo@gmail.com> | 2022-03-09 13:57:47 -0800 |
commit | add2cfcb96d75cd16f7b0bf554bb30d97e720111 (patch) | |
tree | b22ac59aba9c26fae3e4dfbd0aa031efbeb3e493 /src | |
parent | 6f670381cf9f1bd80eded9dedcaa4e15c4ad1dc1 (diff) |
bit_util: Add `bit` utility function
Extracts a singular bit, as a bool, from the specified compile-time index.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/bit_util.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/common/bit_util.h b/src/common/bit_util.h index f50d3308a9..f37538e06c 100644 --- a/src/common/bit_util.h +++ b/src/common/bit_util.h @@ -57,4 +57,11 @@ requires std::is_integral_v<T> return static_cast<T>(1ULL << ((8U * sizeof(T)) - std::countl_zero(value - 1U))); } +template <size_t bit_index, typename T> +requires std::is_integral_v<T> +[[nodiscard]] constexpr bool Bit(const T value) { + static_assert(bit_index < BitSize<T>(), "bit_index must be smaller than size of T"); + return ((value >> bit_index) & T(1)) == T(1); +} + } // namespace Common |