This simplifies the "delete and set to null" pattern to just a call to reset(), and "assign and set to null" to a call to std::move. The ideal would be a custom deleter that throws an error when an implicit delete happens but not when reset() is called, but I'm not sure that's possible. Original-commit: flang-compiler/f18@f618fc729a Reviewed-on: https://github.com/flang-compiler/f18/pull/23