Make C++ Smart Pointers A Bit Smarter