Namespaces
Variants

std::basic_ostream<CharT,Traits>:: operator=

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

#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