summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/cpp/atomic.hpp13
-rw-r--r--src/utils/cpp/type_safe_arithmetic.hpp2
2 files changed, 10 insertions, 5 deletions
diff --git a/src/utils/cpp/atomic.hpp b/src/utils/cpp/atomic.hpp
index 4ef7e40c..b610a350 100644
--- a/src/utils/cpp/atomic.hpp
+++ b/src/utils/cpp/atomic.hpp
@@ -18,6 +18,7 @@
#include <atomic>
#include <condition_variable>
#include <shared_mutex>
+#include <type_traits>
#include <utility> // std::move
// Atomic wrapper with notify/wait capabilities.
@@ -51,22 +52,26 @@ class atomic {
return value_.load(order);
}
- template <class U = T, class = std::enable_if_t<std::is_integral_v<U>>>
+ template <class U = T>
+ requires(std::is_integral_v<U>)
auto operator++() -> T {
std::shared_lock lock(mutex_);
return ++value_;
}
- template <class U = T, class = std::enable_if_t<std::is_integral_v<U>>>
+ template <class U = T>
+ requires(std::is_integral_v<U>)
[[nodiscard]] auto operator++(int) -> T {
std::shared_lock lock(mutex_);
return value_++;
}
- template <class U = T, class = std::enable_if_t<std::is_integral_v<U>>>
+ template <class U = T>
+ requires(std::is_integral_v<U>)
auto operator--() -> T {
std::shared_lock lock(mutex_);
return --value_;
}
- template <class U = T, class = std::enable_if_t<std::is_integral_v<U>>>
+ template <class U = T>
+ requires(std::is_integral_v<U>)
[[nodiscard]] auto operator--(int) -> T {
std::shared_lock lock(mutex_);
return value_--;
diff --git a/src/utils/cpp/type_safe_arithmetic.hpp b/src/utils/cpp/type_safe_arithmetic.hpp
index be2ca405..690e9a86 100644
--- a/src/utils/cpp/type_safe_arithmetic.hpp
+++ b/src/utils/cpp/type_safe_arithmetic.hpp
@@ -30,7 +30,7 @@ template <typename T,
T MAX_VALUE = std::numeric_limits<T>::max(),
T SMALLEST_VALUE = std::numeric_limits<T>::min()>
struct type_safe_arithmetic_tag {
- static_assert(std::is_arithmetic<T>::value,
+ static_assert(std::is_arithmetic_v<T>,
"T must be an arithmetic type (integer or floating-point)");
using value_t = T;