最終更新日時(UTC):
が更新

履歴 編集

function

::node_handle::operator=(C++17)

node_handle& operator=(node_handle&& nh);

概要

ムーブ代入する。

要件

!alloc_、またはstd::allocator_traits<allocator_type>::propagate_on_container_move_assignment::valuetrue、または alloc_ == nh.alloc_ のいずれか。

効果

  • ptr_ != nullptr の場合、
  • std::allocator_traits<allocator_type>::destroy を呼び出して ptr_ が指す container_node_type オブジェクト内の value_type サブオブジェクトを破棄し、
  • 次に std::allocator_traits<allocator_type>::template rebind_traits<container_node_type>::deallocate を呼び出して ptr_ の割り当てを解除する。

  • ptr_nh.ptr_ を代入する。

  • !alloc_ または std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::valuetrue の場合、nh.alloc_alloc_ にムーブ代入する。
  • nh.ptr_nullptr を代入し、nh.alloc_nullopt を代入する。

戻り値

*this

例外

なげない。

備考

ムーブオンリーであり、コピー構築はできない。

#include <iostream>
#include <set>

int main()
{
  std::set<int>::node_type nh;
  // std::set<int>::node_type nh2 = nh;         // コピー構築はできない
  std::set<int>::node_type nh2 = std::move(nh);
  std::cout << static_cast<bool>(nh2);
}

出力

0

バージョン

言語

  • C++17

処理系

参照