Iros
 
Loading...
Searching...
No Matches
guarded_reference.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/util/forward.h"
5
6namespace di::util {
7template<typename T, typename Guard>
9public:
10 template<typename... Args>
11 requires(concepts::ConstructibleFrom<Guard, Args...>)
12 constexpr explicit GuardedReference(T& value, Args&&... args)
13 : m_guard(util::forward<Args>(args)...), m_value(&value) {}
14
15 constexpr auto operator*() const -> T& { return *m_value; }
16 constexpr auto operator->() const -> T* { return m_value; }
17
18private:
19 Guard m_guard;
20 T* m_value;
21};
22}
23
24namespace di {
25using util::GuardedReference;
26}
constexpr auto operator->() const -> T *
Definition guarded_reference.h:16
constexpr GuardedReference(T &value, Args &&... args)
Definition guarded_reference.h:12
constexpr auto operator*() const -> T &
Definition guarded_reference.h:15
Definition operations.h:11
Definition vocab.h:96
Definition zstring_parser.h:9