23 General utilities library [utilities]

23.11 Smart pointers [smartptr]

23.11.1 Class template unique_­ptr [unique.ptr]

23.11.1.2 unique_­ptr for single objects [unique.ptr.single]

23.11.1.2.5 unique_­ptr modifiers [unique.ptr.single.modifiers]

pointer release() noexcept;

Postconditions: get() == nullptr.

Returns: Значение get() было в начале вызова release.

void reset(pointer p = pointer()) noexcept;

Requires: Выражение get_­deleter()(get()) должно быть правильно сформировано, иметь четко определенное поведение и не должно вызывать исключений.

Effects: Присваивается p сохраненному указателю, и затем, если и только если старое значение сохраненного указателя, old_­pне было равно nullptr, вызывает get_­deleter()(old_­p). [ Note: Порядок этих операций важен, потому что вызов get_­deleter() может уничтожить *this. ] end note

Postconditions: get() == p. [ Note: Постусловие не выполняется, если вызов get_­deleter() уничтожает, *this поскольку this->get() больше не является допустимым выражением. ] end note

void swap(unique_ptr& u) noexcept;

Requires: get_­deleter() должно бытьswappable и не должно вызывать исключение swap.

Effects: Вызывает swap сохраненные указатели и сохраненные удалители *this и u.