18 constexpr view_ptr() noexcept : ptr_(
nullptr) {}
20 explicit constexpr view_ptr(std::nullptr_t) noexcept : ptr_(
nullptr) {}
31 ptr_ = other.release();
35 T *
get() const noexcept {
49 explicit operator bool() const noexcept {
50 return ptr_ !=
nullptr;
54 return std::exchange(ptr_,
nullptr);
57 void reset(T *p =
nullptr) noexcept {
62 std::swap(ptr_, other.ptr_);
71template <
typename T1,
typename T2>
73 return lhs.
get() == rhs.
get();
76template <
typename T1,
typename T2>
93 return static_cast<bool>(lhs);
98 return static_cast<bool>(rhs);
A smart pointer that represents a non-owning view of a resource.
void reset(T *p=nullptr) noexcept
T * operator->() const noexcept
constexpr view_ptr() noexcept
view_ptr(view_ptr &&other) noexcept
constexpr view_ptr(std::nullptr_t) noexcept
view_ptr(const view_ptr &other) noexcept=default
view_ptr & operator=(const view_ptr &other) noexcept=default
view_ptr & operator=(view_ptr &&other) noexcept
void swap(view_ptr &other) noexcept
bool operator==(const view_ptr< T1 > &lhs, const view_ptr< T2 > &rhs)
bool operator!=(const view_ptr< T1 > &lhs, const view_ptr< T2 > &rhs)