26 Containers library [containers]

26.2 Container requirements [container.requirements]

26.2.4 Node handles [container.node]

26.2.4.2 node_­handle 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.