15 typename Mutex = std::mutex,
16 typename MutexGuard = std::lock_guard<Mutex>
28 template<
typename... Args>
29 requires std::constructible_from<
value_type, Args&&...>
31 value_{std::forward<Args>(args)...}
39 value_{std::move(tmp).value()}
63 return std::move(value_);
66 template<
typename TGuard = MutexGuard>
72 template<
typename TGuard = MutexGuard>
81 typename TGuard = MutexGuard
84 requires std::is_same_v<decltype(f(std::declval<value_type>())),
const U&>
Definition synchronized_value_guard.h:13
Definition synchronized_value.h:18
SynchronizedValue & operator=(const SynchronizedValue &other)
Definition synchronized_value.h:42
T value_type
Definition synchronized_value.h:20
SynchronizedValue & operator=(SynchronizedValue &&tmp) noexcept
Definition synchronized_value.h:50
~SynchronizedValue() noexcept=default
SynchronizedValueGuard< value_type, mutex_type, TGuard > lock()
Definition synchronized_value.h:67
SynchronizedValueGuard< const value_type, mutex_type, TGuard > lock() const
Definition synchronized_value.h:73
SynchronizedValue(SynchronizedValue &&tmp) noexcept
Definition synchronized_value.h:38
SynchronizedValue()=default
Mutex mutex_type
Definition synchronized_value.h:21
SynchronizedValue(const SynchronizedValue &other)
Definition synchronized_value.h:34
SynchronizedValueGuard< const U, mutex_type, TGuard > lock_child(Getter f) const
Definition synchronized_value.h:83
value_type value() &&
Definition synchronized_value.h:60
MutexGuard mutex_guard_type
Definition synchronized_value.h:22
SynchronizedValue(Args &&... args)
Definition synchronized_value.h:30
Definition custom_decoration_generator.h:5