16 constexpr static auto get_address(T& value) -> T* {
return util::addressof(value); }
34 constexpr operator T&()
const {
return get(); }
35 constexpr auto get() const -> T& {
return *m_pointer; }
37 template<
typename... Args>
46 return !self.m_pointer;
49 return *self.m_pointer;
52 self.m_pointer =
nullptr;
55 self.m_pointer = util::addressof(value);
58 T* m_pointer {
nullptr };
78 constexpr void operator()(T
const&& value)
const =
delete;
94 constexpr void operator()(T
const&& value)
const =
delete;
Definition reference_wrapper.h:14
constexpr ReferenceWrapper(U &&value)
Definition reference_wrapper.h:29
constexpr auto get() const -> T &
Definition reference_wrapper.h:35
constexpr friend void tag_invoke(types::Tag< vocab::set_value >, ReferenceWrapper &self, T &value)
Definition reference_wrapper.h:54
constexpr friend auto tag_invoke(types::Tag< vocab::is_nullopt >, ReferenceWrapper const &self) -> bool
Definition reference_wrapper.h:45
constexpr auto operator=(ReferenceWrapper const &) -> ReferenceWrapper &=default
static constexpr void get_address(T &&)=delete
constexpr ReferenceWrapper(vocab::NullOpt)
Definition reference_wrapper.h:24
constexpr ReferenceWrapper(ReferenceWrapper const &)=default
constexpr friend void tag_invoke(types::Tag< vocab::set_nullopt >, ReferenceWrapper &self)
Definition reference_wrapper.h:51
T Value
Definition reference_wrapper.h:22
constexpr friend auto tag_invoke(types::Tag< vocab::get_value >, ReferenceWrapper const &self) -> T &
Definition reference_wrapper.h:48
constexpr auto invoke
Definition invoke.h:100
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto ref
Definition reference_wrapper.h:98
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto cref
Definition reference_wrapper.h:99
ReferenceWrapper(T &) -> ReferenceWrapper< T >
Definition zstring_parser.h:9
Definition reference_wrapper.h:81
constexpr void operator()(T const &&value) const =delete
constexpr auto operator()(T const &value) const -> ReferenceWrapper< T const >
Definition reference_wrapper.h:83
constexpr auto operator()(ReferenceWrapper< T > value) const -> ReferenceWrapper< T const >
Definition reference_wrapper.h:88
Definition reference_wrapper.h:65
constexpr auto operator()(ReferenceWrapper< T > value) const -> ReferenceWrapper< T >
Definition reference_wrapper.h:72
constexpr void operator()(T const &&value) const =delete
constexpr auto operator()(T &value) const -> ReferenceWrapper< T >
Definition reference_wrapper.h:67