Scroll to navigation

std::ios_base::Init(3) C++ Standard Libary std::ios_base::Init(3)

NAME

std::ios_base::Init - std::ios_base::Init

Synopsis


class Init;


This class is used to ensure that the default C++ streams (std::cin, std::cout,
etc.) are properly initialized and destructed. The class tracks how many instances
of it are created and initializes the C++ streams when the first instance is
constructed as well as flushes the output streams when the last instance is
destructed.


The header <iostream> behaves as if it defines (directly or indirectly) an instance
of std::ios_base::Init with static storage duration: this makes it safe to access
the standard I/O streams in the constructors and destructors of static objects with
ordered initialization (as long as <iostream> is included in the translation unit
before these objects were defined).


Each C++ library module in a hosted implementation behaves as if it
contains an interface unit that defines an unexported
std::ios_base::Init variable with ordered initialization.
(since C++23)
As a result, the definition of that variable is appearance-ordered
before any declaration following the point of importation of a C++
library module. Whether such a definition exists is unobservable by a
program that does not reference any of the standard iostream objects.

Member functions


constructor initializes the default C++ streams if they have not been created yet
(public member function)
flushes the default C++ streams if *this is the last instance to be
destructor destroyed
(public member function)


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
the behaviors of the constructor and the
LWG 1123 C++98 destructor removed the dependency
depend on an exposition-only static data
member init_cnt

See also


cin reads from the standard C input stream stdin
wcin (global object)
cout writes to the standard C output stream stdout
wcout (global object)
cerr writes to the standard C error stream stderr, unbuffered
wcerr (global object)
clog writes to the standard C error stream stderr
wclog (global object)

2024.06.10 http://cppreference.com