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