Limitations of `std::unique_ptr`
Shared ownership in multithreaded environments with `std::shared_ptr`
Locking and unlocking `std::shared_ptr` for thread-safe access
Moving `std::shared_ptr` objects
Moving `std::unique_ptr` objects