codice_7 is deprecated under C++11 and completely removed from C++17. The copy constructor and assignment operators of do not actually copy the stored pointer. Instead, they transfer it, leaving the prior object empty. This was one way to implement strict ownership, so that only one object can own the pointer at any given time. This means that should not be used where copy semantics are needed. Since already existed with its copy semantics, it could not be upgraded to be a move-only pointer without breaking backward compatibility with existing code.