Namespaces
Variants

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

From cppreference.net
explicit basic_ostream ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(1)
protected :
basic_ostream ( const basic_ostream & rhs ) = delete ;
(2) (desde C++11)
protected :
basic_ostream ( basic_ostream && rhs ) ;
(3) (desde C++11)
1) Construye el objeto basic_ostream , asignando valores iniciales a la clase base mediante la llamada a basic_ios::init(sb) .
2) El constructor de copia está protegido y está eliminado. Los flujos de salida no son copiables.
3) El constructor de movimiento utiliza basic_ios < CharT, Traits > :: move ( rhs ) para mover todos los miembros de basic_ios , excepto rdbuf() , desde rhs hacia * this . Este constructor de movimiento está protegido: es llamado por los constructores de movimiento de las clases de flujo de salida movibles std::basic_ofstream y std::basic_ostringstream , que saben cómo mover correctamente el búfer de flujo asociado.

Parámetros

sb - búfer de flujo a utilizar como secuencia de salida
rhs - basic_ostream desde el cual inicializar

Notas

Debido a que basic_ios::init(sb) establece badbit cuando sb es un puntero nulo, y debido a que basic_ostream::sentry no hace nada si el flujo ya está en estado de fallo, escribir en un flujo construido desde un puntero nulo sb es una operación nula.

Ejemplo

#include <iostream>
#include <sstream>
#include <utility>
int main()
{
    // ERROR: el constructor de copia está eliminado
//  std::ostream myout(std::cout);
    // OK: comparte el buffer con cout
    std::ostream myout(std::cout.rdbuf());
    // ERROR: el constructor de movimiento está protegido
//  std::ostream s2(std::move(std::ostringstream() << 7.1));
    // OK: se llama al constructor de movimiento a través de la clase derivada
    std::ostringstream s2(std::ostringstream() << 7.1);
    myout << s2.str() << '\n';
    std::ostream dev_null{nullptr}; // ver Notas anteriores
    dev_null << "no-op";
}

Salida:

7.1