26 Containers library [containers]

26.2 Container requirements [container.requirements]

26.2.4 Node handles [container.node]

26.2.4.2 Constructors, copy, and assignment [container.node.cons]

node_handle(node_handle&& nh) noexcept;
Effects: Constructs a node_­handle object initializing ptr_­ with nh.ptr_­.
Move constructs alloc_­ with nh.alloc_­.
Assigns nullptr to nh.ptr_­ and assigns nullopt to nh.alloc_­.
node_handle& operator=(node_handle&& nh);
Requires: Either !alloc_­, or ator_­traits​::​propagate_­on_­container_­move_­assignment is true, or alloc_­ == nh.alloc_­.
Effects:
  • If ptr_­ != nullptr, destroys the value_­type subobject in the container_­node_­type object pointed to by ptr_­ by calling ator_­traits​::​destroy, then deallocates ptr_­ by calling ator_­traits​::​rebind_­traits<container_­node_­type>​::​deallocate.
  • Assigns nh.ptr_­ to ptr_­.
  • If !alloc_ or ator_­traits​::​propagate_­on_­container_­move_­assignment is true, move assigns nh.alloc_­ to alloc_­.
  • Assigns nullptr to nh.ptr_­ and assigns nullopt to nh.alloc_­.
Returns: *this.
Throws: Nothing.