Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From cppreference.net
basic_stacktrace & operator = ( const basic_stacktrace & other ) ;
(1) (desde C++23)
basic_stacktrace & operator = ( basic_stacktrace && other )
noexcept ( /* ver más abajo */ ) ;
(2) (desde C++23)

Reemplaza el contenido del basic_stacktrace .

1) Operador de asignación de copia. Reemplaza el contenido con una copia del contenido de other .
Si std:: allocator_traits < allocator_type > :: propagate_on_container_copy_assignment :: value es true , el asignador de * this se reemplaza por una copia del de other . Si el asignador de * this después de la asignación fuera a compararse desigual a su valor anterior, el asignador antiguo se utiliza para desasignar la memoria, luego el nuevo asignador se utiliza para asignarla antes de copiar las entradas. De lo contrario, la memoria propiedad de * this puede reutilizarse cuando sea posible.
2) Operador de asignación de movimiento. Reemplaza el contenido con el de other usando semántica de movimiento (es decir, los datos en other son movidos desde other hacia * this ). other queda en un estado válido pero no especificado después.
Si std:: allocator_traits < allocator_type > :: propagate_on_container_move_assignment :: value es true , el asignador de * this es reemplazado por una copia del de other . Si es false y los asignadores de * this y other no son iguales, * this no puede tomar posesión de la memoria propiedad de other y debe asignar cada entrada individualmente, asignando memoria adicional usando su propio asignador según sea necesario.

En cualquier caso, las entradas del stacktrace que originalmente pertenecían a * this pueden ser destruidas o reemplazadas por asignación elemento por elemento.

* this puede establecerse como vacío en caso de fallo de asignación si la implementación refuerza la especificación de excepción.

Contenidos

Parámetros

otro - otro basic_stacktrace para usar como fuente

Valor de retorno

* this

Complejidad

1) Lineal en el tamaño de * this y other .
2) Lineal en el tamaño de * this a menos que los asignadores no sean iguales y no se propaguen, en cuyo caso lineal en el tamaño de * this y other .

Excepciones

1) Puede lanzar excepciones definidas por la implementación.
2)
noexcept especificación:
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_move_assignment :: value
|| std:: allocator_traits < Allocator > :: is_always_equal :: value )

Notas

Después de la asignación de movimiento del contenedor (sobrecarga ( 2 ) ), a menos que la asignación de movimiento elemento por elemento sea forzada por asignadores incompatibles, las referencias, punteros e iteradores (excepto el iterador final) a other permanecen válidos, pero referencian elementos que ahora están en * this . El estándar actual garantiza esto mediante la declaración general en [container.reqmts]/67 , y se está considerando una garantía más directa a través de LWG issue 2321 .

Ejemplo

Véase también

crea un nuevo basic_stacktrace
(función miembro pública)