5namespace bricks::detail {
10 read_guard(
const T& this_in, std::shared_mutex& mutex_in) noexcept
11 : this_(this_in), mutex_(mutex_in)
16 ~read_guard() noexcept { mutex_.unlock_shared(); }
18 read_guard(
const read_guard&) =
delete;
19 auto operator=(
const read_guard&) -> read_guard& =
delete;
21 read_guard(read_guard&&) noexcept = default;
22 auto operator=(read_guard&&) noexcept -> read_guard& = default;
24 auto operator->() const noexcept -> const typename T::value_type* {
return &this_; }
26 auto operator*() const noexcept -> const typename T::value_type& {
return this_; }
30 std::shared_mutex& mutex_;