constexpr explicit out_ptr_t(Smart& smart, Args... args);
constexpr ~out_ptr_t();
constexpr operator Pointer*() const noexcept;
operator void**() const noexcept;
template<class Pointer = void, class Smart, class... Args>
constexpr auto out_ptr(Smart& s, Args&&... args);
constexpr explicit inout_ptr_t(Smart& smart, Args... args);
constexpr ~inout_ptr_t();
constexpr operator Pointer*() const noexcept;
operator void**() const noexcept;
template<class Pointer = void, class Smart, class... Args>
constexpr auto inout_ptr(Smart& s, Args&&... args);