std::basic_ostream<CharT,Traits>::operator=
De cppreference.com
< cpp | io | basic ostream
protected: basic_ostream& operator=(const basic_ostream& rhs )= delete; | (1) | |
protected: basic_ostream& operator=( basic_ostream&& rhs ); | (2) | (desde C++11) |
1) El operador de asignación de copia está protegido y está eliminado (= delete). Los flujos de salida no son CopyAssignable.
2) El operador de asignación de movimiento intercambia todos los datos miembro de la clase base, excepto rdbuf(), con rhs, como si llamara a swap(*rhs). Este operador de asignación de movimiento está protegido: solo lo llaman los operadores de asignación de movimiento de las clases de flujo de salida movibles derivadas std::basic_ofstream y std::basic_ostringstream, que saben cómo mover y asignar correctamente los búferes de flujo asociados.
[editar]Parámetros
rhs | - | El objeto basic_ostream desde el cual asignar a *this. |
[editar]Ejemplo
Ejecuta este código
#include <iostream>#include <sstream>#include <utility> int main(){std::ostringstream s;// std::cout = s; // ERROR: el operador de asignación de copia está eliminado// std::cout = std::move(s); // ERROR: el operador de asignación de movimiento está protegido s = std::move(std::ostringstream()<<42);// de acuerdo, se movió mediante derivaciónstd::cout<< s.str()<<'\n';}
Salida:
42
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2067 | C++11 | 1. the parameter type of overload (1) was basic_ostream& 2. the parameter type of overload (2) was const basic_ostream&& | 1. added const 2. removed const |