Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From cppreference.net
basic_stacktrace & operator = ( const basic_stacktrace & other ) ;
(1) (seit C++23)
basic_stacktrace & operator = ( basic_stacktrace && other )
noexcept ( /* siehe unten */ ) ;
(2) (seit C++23)

Ersetzt den Inhalt des basic_stacktrace .

1) Kopierzuweisungsoperator. Ersetzt den Inhalt durch eine Kopie des Inhalts von other .
Wenn std:: allocator_traits < allocator_type > :: propagate_on_container_copy_assignment :: value true ist, wird der Allokator von * this durch eine Kopie des Allokators von other ersetzt. Falls der Allokator von * this nach der Zuweisung ungleich zu seinem alten Wert verglichen würde, wird der alte Allokator zur Freigabe des Speichers verwendet, anschließend wird der neue Allokator zur Allokation verwendet, bevor die Einträge kopiert werden. Andernfalls kann der von * this verwaltete Speicher bei Möglichkeit wiederverwendet werden.
2) Move-Zuweisungsoperator. Ersetzt die Inhalte durch die von other unter Verwendung von Move-Semantik (d.h. die Daten in other werden von other in * this verschoben). other befindet sich danach in einem gültigen aber unspezifizierten Zustand.
Wenn std:: allocator_traits < allocator_type > :: propagate_on_container_move_assignment :: value true ist, wird der Allokator von * this durch eine Kopie des Allokators von other ersetzt. Wenn es false ist und die Allokatoren von * this und other nicht gleich sind, kann * this nicht den Besitz des Speichers übernehmen, der other gehört, und muss jeden Eintrag einzeln zuweisen, wobei bei Bedarf zusätzlicher Speicher mit dem eigenen Allokator allokiert wird.

In jedem Fall können die Stacktrace-Einträge, die ursprünglich zu * this gehören, entweder zerstört oder durch elementweise Zuweisung ersetzt werden.

* this kann bei Allokationsfehlern auf leer gesetzt werden, wenn die Implementierung die Ausnahmespezifikation verstärkt.

Inhaltsverzeichnis

Parameter

other - ein weiterer basic_stacktrace , der als Quelle verwendet werden soll

Rückgabewert

* this

Komplexität

1) Linear in der Größe von * this und other .
2) Linear in der Größe von * this , außer wenn die Allokatoren nicht gleich sind und sich nicht propagieren, in welchem Fall linear in der Größe von * this und other .

Exceptions

1) Kann implementierungsdefinierte Ausnahmen werfen.
2)
noexcept Spezifikation:
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_move_assignment :: value
|| std:: allocator_traits < Allocator > :: is_always_equal :: value )

Hinweise

Nach Container-Move-Zuweisung (Überladung ( 2 ) ), sofern keine elementweise Move-Zuweisung durch inkompatible Allokatoren erzwungen wird, bleiben Referenzen, Zeiger und Iteratoren (außer dem End-Iterator) auf other gültig, verweisen jedoch auf Elemente, die sich nun in * this befinden. Der aktuelle Standard gibt diese Garantie durch die pauschale Aussage in [container.reqmts]/67 , und eine direktere Garantie wird durch LWG-Issue 2321 geprüft.

Beispiel

Siehe auch

erstellt einen neuen basic_stacktrace
(öffentliche Elementfunktion)