- Will auto_ptr be deprecated in incoming C++ standard?
- Should unique_ptr be used for ownership transfer instead of shared_ptr?
- If unique_ptr is not in the standard, then do I need to use shared_ptr instead?
views:
778answers:
3In C++0x std::auto_ptr
will be deprecated in favor of std::unique_ptr
. The choice of smart pointer will depend on your use case and your requirements, with std::unique_ptr
with move semantics for single ownership that can be used inside containers (using move semantics) and std::shared_ptr
when ownership is shared.
You should try to use the smart pointer that best fits the situation, choosing the correct pointer type provides other programmers with insight into your design.
Yes, as of today auto_ptr
will be deprecated in C++0x and you should use unique_ptr
instead. From the latest draft standard (n3035), section D.9
The class template
auto_ptr
is deprecated. [ Note: The class templateunique_ptr
(20.9.10) provides a better solution. —end note ]
Until the standard is ratified, it's always possible that the committee will revise this decision although I feel that is unlikely for this decision.
No, it isn't deprecated. It may be, if C++0x ever gets accepted. And it will realistically always be supported. I don't believe that any deprecated feature has ever been dropped from real-world C++ implementations.