Daily bit(e) of C++ | std::out_ptr, std::inout_ptr
Daily bit(e) of C++ #388, The C++23 C-style API interoperability utilities: std::out_ptr, std::inout_ptr.
The C++23 std::out_ptr and std::inout_ptr allow interoperability between C++ smart pointers and C-style APIs.
A typical pattern in C APIs is that the (re-)allocating function accepts the handle to be allocated as either T** or void**.
Note that the result of calling std::out_ptr and std::inout_ptr is meant to be a temporary that should not outlive the current expression.