Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From fr.cppreference.net
basic_stacktrace & operator = ( const basic_stacktrace & other ) ;
(1) (depuis C++23)
basic_stacktrace & operator = ( basic_stacktrace && other )
noexcept ( /* voir ci-dessous */ ) ;
(2) (depuis C++23)

Remplace le contenu du basic_stacktrace .

1) Opérateur d'affectation par copie. Remplace le contenu par une copie du contenu de other .
Si std:: allocator_traits < allocator_type > :: propagate_on_container_copy_assignment :: value est true , l'allocateur de * this est remplacé par une copie de celui de other . Si l'allocateur de * this après l'affectation serait différent de son ancienne valeur, l'ancien allocateur est utilisé pour désallouer la mémoire, puis le nouvel allocateur est utilisé pour l'allouer avant de copier les éléments. Sinon, la mémoire possédée par * this peut être réutilisée lorsque possible.
2) Opérateur d'affectation par déplacement. Remplace le contenu par celui de other en utilisant la sémantique de déplacement (c'est-à-dire que les données dans other sont déplacées de other vers * this ). other se trouve dans un état valide mais non spécifié par la suite.
Si std:: allocator_traits < allocator_type > :: propagate_on_container_move_assignment :: value est true , l'allocateur de * this est remplacé par une copie de celui de other . S'il est false et que les allocateurs de * this et other ne sont pas égaux, * this ne peut pas prendre possession de la mémoire détenue par other et doit assigner chaque entrée individuellement, en allouant de la mémoire supplémentaire en utilisant son propre allocateur si nécessaire.

Dans tous les cas, les entrées de la stacktrace qui appartenaient initialement à * this peuvent être soit détruites soit remplacées par une assignation élément par élément.

* this peut être défini comme vide en cas d'échec d'allocation si l'implémentation renforce la spécification d'exception.

Sommaire

Paramètres

autre - une autre basic_stacktrace à utiliser comme source

Valeur de retour

* this

Complexité

1) Linéaire dans la taille de * this et other .
2) Linéaire dans la taille de * this sauf si les allocateurs ne sont pas égaux et ne se propagent pas, auquel cas linéaire dans la taille de * this et other .

Exceptions

1) Peut lever des exceptions définies par l'implémentation.
2)
noexcept spécification :
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_move_assignment :: value
|| std:: allocator_traits < Allocator > :: is_always_equal :: value )

Notes

Après un déplacement par affectation du conteneur (surcharge (2)), sauf si un déplacement par élément est forcé par des allocateurs incompatibles, les références, pointeurs et itérateurs qui référençaient à l'origine des éléments dans other restent valides, mais se réfèrent désormais aux éléments qui sont dans *this. La norme actuelle garantit cela via la déclaration générale dans [container.reqmts]/67, et une garantie plus directe est à l'étude via LWG issue 2321.

Exemple

Voir aussi

crée un nouveau basic_stacktrace
(fonction membre publique)