Namespaces
Variants

std::ios_base:: ios_base

From cppreference.net
(1)
private :
ios_base ( const ios_base & ) ;
(до C++11)
public :
ios_base ( const ios_base & ) = delete ;
(начиная с C++11)
protected :
ios_base ( ) ;
(2)
1) Конструктор копирования объявлен private (until C++11) deleted (since C++11) : потоки не поддерживают копирование.
2) Конструктор по умолчанию защищён: только производные классы могут создавать std::ios_base . Внутреннее состояние не определено после конструирования. Производный класс должен вызвать std::basic_ios::init() для завершения инициализации перед первым использованием или перед деструктором; в противном случае поведение не определено.

Примечания

То же самое относится к конструкторам следующего класса в иерархии I/O, std::basic_ios . Дальнейшие производные классы ( std::istream и std::ostream ) всегда конструируются с конкретным объектом stream buffer и вызывают std::basic_ios::init() , возможно, более одного раза, для завершения инициализации их виртуального базового класса.

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие исправления дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 50 C++98 конструктор копирования не был указан указан как приватный
LWG 220 C++98 поведение при уничтожении объекта std::ios_base
до вызова его init() было неясным
поведение в этом случае
не определено
LWG 1249 C++98 инициализация не обязательно должна быть завершена до первого использования также должна быть завершена