4 #include <shared_mutex> 9 template <
typename T,
typename LockType = std::unique_lock<std::shared_mutex>>
20 : element_(other.element_)
21 , lock_(
std::move(other.lock_))
27 this->element_ = other.element_;
28 this->lock_ = std::move(other.lock_);
35 return this->element_;
40 return *this->element_;
67 : element_(
std::move(element))
73 this->element_ = element;
79 this->element_ = std::move(element);
88 template <
typename X = T,
89 typename = std::enable_if_t<!std::is_const<X>::value>>
97 mutable std::shared_mutex mutex_;
UniqueAccess(T &&element)
Definition: UniqueAccess.hpp:66
AccessGuard(AccessGuard< T, LockType > &&other)
Definition: UniqueAccess.hpp:19
AccessGuard< T, LockType > & operator=(AccessGuard< T, LockType > &&other)
Definition: UniqueAccess.hpp:25
Definition: UniqueAccess.hpp:10
AccessGuard(T &element, std::shared_mutex &mutex)
Definition: UniqueAccess.hpp:13
Definition: SeventvEventAPISubscription.hpp:67
Definition: Application.cpp:48
T * operator->() const
Definition: UniqueAccess.hpp:33
SharedAccessGuard< const X > accessConst() const
Definition: UniqueAccess.hpp:90
AccessGuard< T > access() const
Definition: UniqueAccess.hpp:83
Definition: UniqueAccess.hpp:53
UniqueAccess()
Definition: UniqueAccess.hpp:56
UniqueAccess< T > & operator=(const T &element)
Definition: UniqueAccess.hpp:71
UniqueAccess(const T &element)
Definition: UniqueAccess.hpp:61
UniqueAccess< T > & operator=(T &&element)
Definition: UniqueAccess.hpp:77
T & operator*() const
Definition: UniqueAccess.hpp:38