I think it is better and real problem of smart pointer,
to check what they own -
does it stack memory place pointer,
does it was deleted or not,
or must be deleted and not did - so must be asserted
at place of problem immedialtely. + (means plus)
It makes possible -
correctness of deleteing and
copy to incorrect places check,
check for leak finally -at shared pointes.
The most problem for poiners in program.
Does some pointer provides memory-check for operation correctness control ?
Other behavior- as shared_Ptr from boost