Spec-Zone.ru › C++

std::basic_stacktrace<Allocator>::operator=

basic_stacktrace& operator=( const basic_stacktrace& other );
(1) (начиная с C++23)
basic_stacktrace& operator=( basic_stacktrace&& other )
    noexcept(/* see below */);
(2) (начиная с C++23)

Заменяет содержимое basic_stacktrace.

1) Оператор копирующего присваивания. Заменяет содержимое копией содержимого other.
Если std::allocator_traits<allocator_type>::propagate_on_container_copy_assignment::value является true, аллокатор *this заменяется копией аллокатора other. Если после присваивания аллокаторы *this и его прежнее значение не равны, старая память освобождается с помощью старого аллокатора, затем новый аллокатор используется для её выделения перед копированием элементов. В противном случае память, принадлежащая *this, по возможности может быть использована повторно.
2) Оператор перемещающего присваивания. Заменяет содержимое содержимым other, используя семантику перемещения (т. е. данные в other перемещаются из other в *this). После этого other находится в допустимом, но неуточнённом состоянии.
Если std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::value является true, аллокатор *this заменяется копией аллокатора other. Если он является false, а аллокаторы *this и other не равны, *this не может получить владение памятью, принадлежащей other, и должен присваивать элементы по одному, при необходимости выделяя дополнительную память с помощью собственного аллокатора.

В любом случае элементы стека трассировки, изначально принадлежащие *this, могут быть уничтожены или заменены поэлементным присваиванием.

При сбое выделения памяти *this может быть очищен, если реализация усиливает спецификацию исключений.

Параметры

other - другой basic_stacktrace, используемый в качестве источника

Возвращаемое значение

*this

Сложность

1) Линейная относительно размера *this и other.
2) Линейная относительно размера *this, если аллокаторы не равны и распространение аллокатора не выполняется; в этом случае сложность линейная относительно размера *this и other.

Исключения

1) Может генерировать исключения, определяемые реализацией.
2)
noexcept спецификация:
noexcept(std::allocator_traits<Allocator>::propagate_on_container_move_assignment::value
|| std::allocator_traits<Allocator>::is_always_equal::value)

Примечания

После перемещающего присваивания контейнера (перегрузка (2)), если только поэлементное перемещающее присваивание не требуется из-за несовместимых аллокаторов, ссылки, указатели и итераторы, изначально указывавшие на элементы в other, остаются действительными, но теперь указывают на элементы в *this. Действующий стандарт гарантирует это общим положением в [container.reqmts]/67; также рассматривается возможность более прямой гарантии в рамках предложения LWG 2321.

Пример

См. также

(конструктор)
создаёт новый basic_stacktrace
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/basic_stacktrace/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API