Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::polymorphic<T, Allocator>::operator=

      From cppreference.com
      <cpp‎ |memory‎ |polymorphic
       
       
      Memory management library
      (exposition only*)
      Allocators
      Uninitialized memory algorithms
      Constrained uninitialized memory algorithms
      Memory resources
      Uninitialized storage(until C++20)
      (until C++20*)
      (until C++20*)
      Garbage collector support(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
       
       
      constexpr polymorphic& operator=(const polymorphic& other);
      (1)(since C++26)
      constexpr polymorphic& operator=( polymorphic&& other)
         noexcept(/* see below */);
      (2)(since C++26)

      Replaces contents of*this with the contents ofother.

      Lettraits bestd::allocator_traits<Allocator>:

      1) Ifstd::addressof(other)== this istrue, does nothing. Otherwise, letneed_update betraits::propagate_on_container_copy_assignment::value:
      1. Ifother is valueless, proceeds to the next step. Otherwise, constructs a new owned object in*this usingtraits::construct with*other as the argument, using the allocatorupdate_alloc? other.alloc : alloc.
      2. The previously owned object in*this (if any) is destroyed usingtraits::destroy and then the storage is deallocated.
      After updating the object owned by*this, ifneed_update istrue,alloc is replaced with a copy ofother.alloc.
      IfT is anincomplete type, the program is ill-formed.
      2) Ifstd::addressof(other)== this istrue, does nothing. Otherwise, letneed_update betraits::propagate_on_container_move_assignment::value:
      • Ifalloc == other.alloc istrue, swaps the owned objects in*this andother; the owned object inother (if any) is then destroyed usingtraits::destroy and then the storage is deallocated.
      • Otherwise:
      1. Ifother is valueless, proceeds to the next step. Otherwise, constructs a new owned object in*this usingtraits::construct withstd::move(*other) as the argument, using the allocatorupdate_alloc? other.alloc : alloc.
      2. The previously owned object in*this (if any) is destroyed usingtraits::destroy and then the storage is deallocated.
      After updating the objects owned by*this andother, ifneed_update istrue,alloc is replaced with a copy ofother.alloc.
      If all following conditions are satisfied, the program is ill-formed:

      Contents

      [edit]Parameters

      other - anotherpolymorphic object whose owned value (if exists) is used for assignment

      [edit]Return value

      *this

      [edit]Exceptions

      1) If any exception is thrown, there are no effects on*this.
      2) If any exception is thrown, there are no effects on*this orother.
      noexcept specification:  
      noexcept(std::allocator_traits<Allocator>::

                   propagate_on_container_move_assignment::value

                   ||std::allocator_traits<Allocator>::is_always_equal::value)

      [edit]Example

      This section is incomplete
      Reason: no example
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/polymorphic/operator%3D&oldid=182600"

      [8]ページ先頭

      ©2009-2025 Movatter.jp