Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From 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.

Table des matières

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 l'affectation par déplacement du conteneur (surcharge ( 2 ) ), sauf si l'affectation par déplacement élément par élément est forcée par des allocateurs incompatibles, les références, pointeurs et itérateurs (à l'exception de l'itérateur de fin) vers other restent valides, mais se réfèrent aux éléments qui se trouvent désormais dans * this . La norme actuelle garantit ceci via l'énoncé général 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)