This is a dumb idea.
It's literally just a unique_ptr with an owning flag. If owning is false when the destructor is called, it calls unique_ptr<>::release() to effectively skip deallocation.
- Acts like a
std::unique_ptrwhen given a managed object - Acts like a dumb pointer when given am unmanaged object
// Constructed from unique_ptr, a flex_ptr is owning