Initializing `std::shared_ptr` with nullptr
Initializing `std::unique_ptr` with nullptr
`std::shared_ptr` with custom allocator
`std::unique_ptr` with custom allocator
Limitations of `std::shared_ptr`