Is it really the worst?

At least it is consistent with the concept of weak references in other languages (Python, C#)

And every item in the smart_ptr library ends in either _ptr or _array. Is that so bad?

Alex