CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 23 Jul 2025 20:49:36 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/memory/unique_ptr/operator=/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Jul 2025 20:49:37 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"990d-V4gMdIQHyjtq/Brjj2U46c05tJg"
Content-Encoding: gzip
The object acquires the ownership of x's content, including both the stored pointer and the stored deleter (along with the responsibility of deleting the object at some point). Any object owned by the unique_ptr object before the call is deleted (as if unique_ptr's destructor was called).
If the argument is a null pointer (2), the unique_ptr object becomes empty, with the same behavior as if calling:
Otherwise, it acquires x's assets, with a behavior equivalent to:
If the deleter_type is a reference type, the deleter object is copied (instead of moved).
The assignment operation between unique_ptr objects that point to different types (3) needs to be between types whose pointers are implicitly convertible, and shall not involve arrays in any case (the third signature is not part of the array specialization of unique_ptr).
Copy assignment (4) to a unique_ptr type is not allowed (deleted signature).
After a call to lhs=rhs (where both lhs and rhs represent compatible unique_ptr objects):
Output:
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<memory>
classes
- allocator
-
allocator_arg_tC++11
-
allocator_traitsC++11
- auto_ptr
- auto_ptr_ref
-
bad_weak_ptrC++11
-
default_deleteC++11
-
enable_shared_from_thisC++11
-
owner_lessC++11
-
pointer_traitsC++11
- raw_storage_iterator
-
shared_ptrC++11
-
unique_ptrC++11
-
uses_allocatorC++11
-
weak_ptrC++11
enum classes
-
pointer_safetyC++11
-
functions
-
addressofC++11
-
alignC++11
-
allocate_sharedC++11
-
const_pointer_castC++11
-
declare_no_pointersC++11
-
declare_reachableC++11
-
dynamic_pointer_castC++11
-
get_deleterC++11
-
get_pointer_safetyC++11
- get_temporary_buffer
-
make_sharedC++11
- return_temporary_buffer
-
static_pointer_castC++11
-
undeclare_no_pointersC++11
-
undeclare_reachableC++11
- uninitialized_copy
-
uninitialized_copy_nC++11
- uninitialized_fill
- uninitialized_fill_n
-
objects
-
allocator_argC++11
-
unique_ptr
-
unique_ptr::~unique_ptrC++11
-
unique_ptr::unique_ptrC++11
member functions
-
unique_ptr::getC++11
-
unique_ptr::get_deleterC++11
-
unique_ptr::operator boolC++11
-
unique_ptr::operator->C++11
-
unique_ptr::operator[]C++11
-
unique_ptr::operator*C++11
-
unique_ptr::operator=C++11
-
unique_ptr::releaseC++11
-
unique_ptr::resetC++11
-
unique_ptr::swapC++11
-
non-member overloads
-
relational operators (unique_ptr)C++11
-
swap (unique_ptr)C++11
-
- Reference
- <memory>
- unique_ptr
- operator=
public member function
<memory>
std::unique_ptr::operator=
move assignment (1) | unique_ptr& operator= (unique_ptr&& x) noexcept; |
---|---|
assign null pointer (2) | unique_ptr& operator= (nullptr_t) noexcept; |
type-cast assignment (3) | template <class U, class E> unique_ptr& operator= (unique_ptr<U,E>&& x) noexcept; |
copy assignment (deleted!) (4) | unique_ptr& operator= (const unique_ptr&) = delete; |
unique_ptr assignment
If the argument is a null pointer (2), the unique_ptr object becomes empty, with the same behavior as if calling:
|
|
Otherwise, it acquires x's assets, with a behavior equivalent to:
|
|
If the deleter_type is a reference type, the deleter object is copied (instead of moved).
The assignment operation between unique_ptr objects that point to different types (3) needs to be between types whose pointers are implicitly convertible, and shall not involve arrays in any case (the third signature is not part of the array specialization of unique_ptr).
Copy assignment (4) to a unique_ptr type is not allowed (deleted signature).
After a call to lhs=rhs (where both lhs and rhs represent compatible unique_ptr objects):
- lhs owns the data previously owned by rhs and has rhs's former stored pointer and stored deleter.
- The data owned by lhs before the call has been deleted (using the deleter that member get_deleter would provide before the call).
- rhs is empty, owning no data and pointing to nullptr.
Parameters
- x
- A unique_ptr rvalue.
U* shall be implicitly convertible to T* (where T is unique_ptr's first template parameter).
Notice that this function only performs move assignment. Copy assignment is not supported by unique_ptr (except for nullptr).
Return value
*thisExample
|
|
Output:
foo: empty bar: 101 |
See also
- unique_ptr::reset
- Reset pointer (public member function)
- unique_ptr::unique_ptr
- Construct unique_ptr (public member function)
- unique_ptr::get
- Get pointer (public member function)
- unique_ptr::release
- Release pointer (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us