diff options
Diffstat (limited to 'chilbert/Operations.hpp')
-rw-r--r-- | chilbert/Operations.hpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/chilbert/Operations.hpp b/chilbert/Operations.hpp index 06a06fa..b2e4344 100644 --- a/chilbert/Operations.hpp +++ b/chilbert/Operations.hpp @@ -29,11 +29,11 @@ namespace chilbert { /// IntegralIndex<T> only exists if T is integral template <typename T> -using IntegralIndex = std::enable_if_t<std::is_integral<T>::value, int>; +using IntegralIndex = std::enable_if_t<std::is_integral<T>::value, size_t>; /// BitsetIndex<T> only exists if T is not integral (must be a bitset) template <typename T> -using BitsetIndex = std::enable_if_t<!std::is_integral<T>::value, int>; +using BitsetIndex = std::enable_if_t<!std::is_integral<T>::value, size_t>; /// Return the `index`th bit in `field` template <typename T> @@ -41,7 +41,7 @@ bool testBit(const T& field, const IntegralIndex<T> index) { assert(size_t(index) < sizeof(field) * CHAR_BIT); - return field & (((T)1) << index); + return field & (T{1} << index); } /// Return the `index`th bit in `field` @@ -58,7 +58,7 @@ void setBit(T& field, const IntegralIndex<T> index) { assert(size_t(index) < sizeof(field) * CHAR_BIT); - field |= ((T)1 << index); + field |= (T{1} << index); assert(testBit(field, index)); } @@ -68,7 +68,7 @@ void setBit(T& field, const IntegralIndex<T> index, const bool value) { assert(size_t(index) < sizeof(field) * CHAR_BIT); - field ^= (-value ^ field) & ((T)1 << index); + field ^= (-T{value} ^ field) & (T{1U} << index); assert(testBit(field, index) == value); } @@ -96,14 +96,14 @@ template <> int ffs<unsigned long>(const unsigned long field) { - return __builtin_ffsl(field); + return __builtin_ffsl(static_cast<long>(field)); } template <> int ffs<unsigned long long>(const unsigned long long field) { - return __builtin_ffsll(field); + return __builtin_ffsll(static_cast<long long>(field)); } /// Calculates the Gray Code of `value` in place |