25 #include <type_traits> 28 #ifndef DOXYGEN_SHOULD_SKIP_THIS 47 : m_ptr(std::addressof(ref))
60 Ref(
const Ref& other) noexcept =
default;
65 template<typename U, typename = std::enable_if_t<std::is_base_of<T, U>::value>>
67 : m_ptr(std::addressof(other.
get()))
74 Ref& operator=(
const Ref& other) noexcept =
default;
79 template<typename U, typename = std::enable_if_t<std::is_base_of<T, U>::value>>
81 m_ptr = std::addressof(other.
get());
89 T&
get()
const noexcept {
98 operator T& ()
const noexcept {
114 return std::addressof(lhs.get()) == std::addressof(rhs.get());
125 return std::addressof(lhs.get()) == std::addressof(rhs);
136 return std::addressof(lhs) == std::addressof(rhs.get());
148 #ifndef DOXYGEN_SHOULD_SKIP_THIS 150 Ref<T> ref(
const T&&) =
delete;
153 #ifndef DOXYGEN_SHOULD_SKIP_THIS constexpr bool operator==(const T &lhs, Ref< T > rhs) noexcept
Referece comparison.
Definition: Ref.h:135
Ref & operator=(const Ref< U > &other) noexcept
Copy assignment.
Definition: Ref.h:80
Ref(const Ref< U > &other) noexcept
Copy constructor.
Definition: Ref.h:66
T & get() const noexcept
Get the reference.
Definition: Ref.h:89
The namespace for gf classes.
Definition: Action.h:35
constexpr bool operator==(Ref< T > lhs, const T &rhs) noexcept
Referece comparison.
Definition: Ref.h:124
Ref< T > ref(T &object)
Reference creation.
Definition: Ref.h:144
constexpr bool operator==(Ref< T > lhs, Ref< T > rhs) noexcept
Referece comparison.
Definition: Ref.h:113
A reference wrapper.
Definition: Ref.h:39
Ref(T &ref) noexcept
Constructor with a lvalue reference.
Definition: Ref.h:46