mirror of
https://github.com/ceph/ceph
synced 2025-02-24 03:27:10 +00:00
Merge pull request #43836 from ronen-fr/wip-rf-atomic-enums
crimson/common: disable arithmetic operators for atomic enums Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
This commit is contained in:
commit
56463c4bc5
@ -42,6 +42,7 @@ namespace ceph {
|
||||
}
|
||||
T operator=(T desired) noexcept {
|
||||
value = std::move(desired);
|
||||
return *this;
|
||||
}
|
||||
operator T() const noexcept {
|
||||
return value;
|
||||
@ -49,23 +50,30 @@ namespace ceph {
|
||||
|
||||
// We need to differentiate with SFINAE as std::atomic offers beefier
|
||||
// interface for integral types.
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator++() {
|
||||
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator++() {
|
||||
return ++value;
|
||||
}
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator++(int) {
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator++(int) {
|
||||
return value++;
|
||||
}
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator--() {
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator--() {
|
||||
return --value;
|
||||
}
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator--(int) {
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator--(int) {
|
||||
return value--;
|
||||
}
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator+=(const dummy_atomic& b) {
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator+=(const dummy_atomic& b) {
|
||||
value += b;
|
||||
return value;
|
||||
}
|
||||
std::enable_if_t<std::is_integral_v<T>, T> operator-=(const dummy_atomic& b) {
|
||||
template<class TT=T>
|
||||
std::enable_if_t<!std::is_enum_v<TT> && std::is_integral_v<TT>, TT> operator-=(const dummy_atomic& b) {
|
||||
value -= b;
|
||||
return value;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user