25template <
typename T>
struct OptionalRef
27 OptionalRef () =
default;
28 OptionalRef (std::nullopt_t) { }
29 OptionalRef (T &ref) : ref_ (ref) { }
31 std::optional<std::reference_wrapper<T>> ref_;
49 const T * operator->()
const
52 return std::addressof (ref_->get ());
57 return std::addressof (ref_->get ());
60 explicit operator bool ()
const {
return has_value (); }
67 bool has_value ()
const {
return ref_.has_value (); }