aboutsummaryrefslogtreecommitdiffstats
path: root/chilbert/Operations.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'chilbert/Operations.hpp')
-rw-r--r--chilbert/Operations.hpp14
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