Namespaces
Variants

std::ios_base:: ios_base

From cppreference.net
(1)
private :
ios_base ( const ios_base & ) ;
(hasta C++11)
public :
ios_base ( const ios_base & ) = delete ;
(desde C++11)
protected :
ios_base ( ) ;
(2)
1) El constructor de copia es private (until C++11) deleted (since C++11) : los streams no son copiables.
2) El constructor por defecto está protegido: solo las clases derivadas pueden construir std::ios_base . El estado interno es indefinido después de la construcción. La clase derivada debe llamar std::basic_ios::init() para completar la inicialización antes del primer uso o antes del destructor; de lo contrario, el comportamiento es indefinido.

Notas

Lo mismo se aplica a los constructores de la siguiente clase en la jerarquía de E/S, std::basic_ios . Las clases derivadas posteriores ( std::istream y std::ostream ) siempre se construyen con un objeto concreto de búfer de flujo y llaman a std::basic_ios::init() , posiblemente más de una vez, para completar la inicialización de su base virtual.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 50 C++98 el constructor de copia no estaba especificado especificado como privado
LWG 220 C++98 el comportamiento al destruir un objeto std::ios_base
antes de llamar a su init() no estaba claro
el comportamiento es
indefinido en este caso
LWG 1249 C++98 la inicialización no necesitaba completarse antes del primer uso también debe completarse