diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-10-01 10:14:34 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-10-07 13:37:39 +0200 |
commit | a324e341ef8097d6d93731b592701d43bb5fb5d0 (patch) | |
tree | 97f68c73f22788cc7d3d6e5ae6411f073e647308 /src/utils/cpp/atomic.hpp | |
parent | 5eb83b81a26e9a321ff8d68506905eaa4f15acd7 (diff) | |
download | justbuild-a324e341ef8097d6d93731b592701d43bb5fb5d0.tar.gz |
Enable modernize-* checks.
Diffstat (limited to 'src/utils/cpp/atomic.hpp')
-rw-r--r-- | src/utils/cpp/atomic.hpp | 13 |
1 files changed, 9 insertions, 4 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_--; |