Clean up changes to the atomic_queue

This commit is contained in:
Paul Fd 2020-03-11 09:50:04 +01:00
parent bd93955fb3
commit 8ba825d3dd

View file

@ -95,15 +95,35 @@ constexpr T& map(T* elements, unsigned index) noexcept {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Implement a "bit-twiddling hack" for finding the next power of 2
// in either 32 bits or 64 bits in C++11 compatible constexpr functions
// "Runtime" version for 32 bits
// --a;
// a |= a >> 1;
// a |= a >> 2;
// a |= a >> 4;
// a |= a >> 8;
// a |= a >> 16;
// ++a;
template<class T>
constexpr T decrement(T x) { return x - 1; }
constexpr T decrement(T x) {
return x - 1;
}
template<class T>
constexpr T increment(T x) { return x + 1; }
constexpr T increment(T x) {
return x + 1;
}
template<class T>
constexpr T or_equal(T x, unsigned u) { return (x | x >> u); }
constexpr T or_equal(T x, unsigned u) {
return (x | x >> u);
}
template<class T, class... Args>
constexpr T or_equal(T x, unsigned u, Args... rest)
{
constexpr T or_equal(T x, unsigned u, Args... rest) {
return or_equal(or_equal(x, u), rest...);
}