13template<
typename Value, concepts::Lock Lock = DefaultLock>
16template<
typename Value, concepts::Lock Lock = DefaultLock>
26 constexpr explicit Synchronized(U&& value) : m_value(util::forward<U>(value)) {}
28 template<
typename... Args>
34 template<concepts::Invocable<Value&> Fun>
45 constexpr auto read() const -> Value
46 requires(
concepts::CopyConstructible<Value>)
56 Lock
mutable m_lock {};
Definition scoped_lock.h:8
Definition synchronized.h:17
constexpr auto read() const -> Value requires(concepts::CopyConstructible< Value >)
Definition synchronized.h:45
auto get_lock() -> Lock &
Definition synchronized.h:52
constexpr Synchronized(InPlace, Args &&... args)
Definition synchronized.h:30
constexpr auto get_assuming_no_concurrent_accesses() -> Value &
Definition synchronized.h:42
constexpr auto lock()
Definition synchronized.h:40
constexpr auto with_lock(Fun &&function) -> meta::InvokeResult< Fun, Value & >
Definition synchronized.h:35
constexpr Synchronized(U &&value)
Definition synchronized.h:26
constexpr auto get_const_assuming_no_concurrent_mutations() const -> Value const &
Definition synchronized.h:43
Synchronized(Synchronized &&)=delete
Definition guarded_reference.h:8
Definition operations.h:11
Definition operations.h:24
Definition any_storable.h:9
constexpr auto invoke
Definition invoke.h:100
util::GuardedReference< Value, ScopedLock< Lock > > LockedReference
Definition synchronized.h:14
Synchronized(T &&) -> Synchronized< T >
Definition zstring_parser.h:9