std::auto_ptr::auto_ptr(3)
πΈ NAME πΈ
std::auto_ptr::auto_ptr - std::auto_ptr::auto_ptr
Okay bestie, we're looking at the std::auto_ptr::auto_ptr(3) page from the C++ Standard Libary manual. Yes, the title is a whole mouthful β it's giving βconstructor with main character energyβ β but it's just the constructor page for std::auto_ptr. π
β¨ Synopsis β¨
Here's the full constructor lineup, exactly as the page serves it:
explicit auto_ptr( X* p = 0 ) throw(); (1) (deprecated in C++11)
(removed in C++17)
auto_ptr( auto_ptr& r ) throw(); (2) (deprecated in C++11)
(removed in C++17)
template< class Y > (3) (deprecated in C++11)
auto_ptr( auto_ptr<Y>& r ) throw(); (removed in C++17)
auto_ptr( auto_ptr_ref<X> m ) throw(); (4) (deprecated in C++11)
(removed in C++17)
π¨ Deprecation vibe check: all four are marked deprecated in C++11 and removed in C++17. That's straight from the page, bestie β not me being dramatic.
The big idea: it constructs the auto_ptr from a pointer that refers to the object to manage. Here's the breakdown:
- Constructs the
auto_ptrwith pointerp. - Constructs the
auto_ptrwith the pointer held inr.r.release()is called to acquire the ownership of the object. - Same as (2).
Y*must be implicitly convertible toT*. - Constructs the
auto_ptrwith the pointer held in theauto_ptrinstance referred to bym.p.release()is called for theauto_ptrpthatmholds to acquire the ownership of the object.
auto_ptr_ref is an implementation-defined type that holds a reference to auto_ptr. std::auto_ptr is implicitly convertible to and assignable from this type. The implementation is allowed to provide the template with a different name or implement equivalent functionality in other ways. π¦
π Parameters π
pβ a pointer to an object to manage.rβ anotherauto_ptrto transfer the ownership of the object from.mβ an implementation-defined type that holds a reference toauto_ptr.
π Notes π
Okay so the tea β: the constructor and the copy assignment operator from auto_ptr_ref is provided to allow copy-constructing and assigning std::auto_ptr from nameless temporaries. Since its copy constructor and copy assignment operator take the argument as non-const reference, they cannot bind rvalue arguments directly. However, a user-defined conversion can be executed (which releases the original auto_ptr), followed by a call to the constructor or copy-assignment operator that take auto_ptr_ref by value. This is an early implementation of move semantics. π
okay that's the whole page, bestie π«Ά β source: http://cppreference.com, version/date: 2024.06.10, page: std::auto_ptr::auto_ptr(3) πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms