std::basic_ostream<CharT,Traits>:: operator=
From cppreference.net
<
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. Los flujos de salida no son
CopyAssignable
.
2)
El operador de asignación de movimiento intercambia todos los miembros de datos de la clase base, excepto
rdbuf()
, con
rhs
, como si se llamara a
swap
(
*
rhs
)
. Este operador de asignación de movimiento está protegido: solo es llamado por los operadores de asignación de movimiento de las clases derivadas de flujo de salida movibles
std::basic_ofstream
y
std::basic_ostringstream
, que saben cómo asignar correctamente por movimiento los búferes de flujo asociados.
Parámetros
| rhs | - |
el
basic_ostream
objeto desde el cual asignar a
*
this
|
Ejemplo
Ejecutar este código
#include <iostream> #include <sstream> #include <utility> int main() { std::ostringstream s; // std::cout = s; // ERROR: copy assignment operator is deleted // std::cout = std::move(s); // ERROR: move assignment operator is protected s = std::move(std::ostringstream() << 42); // OK, moved through derived std::cout << s.str() << '\n'; }
Salida:
42
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2067 | C++11 |
1. el tipo de parámetro de la sobrecarga
(1)
era
basic_ostream&
2. el tipo de parámetro de la sobrecarga (2) era const basic_ostream && |
1. se agregó
const
2. se eliminó const |