Quote Originally Posted by Mario F. View Post
As for cout, this is simple because the C++ standard requires that cout, cin, cerr and its wide brothers and sisters be defined prior to any other user-defined objects. How it exactly goes about this, I'm unsure. Probably by having them already pre-compiled?
The only requirements I can find for the 8 <iostream> objects, are that they have to be constructed 1) before or during the first ios_base::Init construction, 2) before main.

Every translation unit that includes <iostream> will get its own __ioinit global.

The MSCRT from VS 2008 uses it's #pragma init_seg(compiler) support.

gg