ヘッダファイル ios

次のプログラムをg++でコンパイル&実行してみてください。

#include<ios>
int main(){printf("%s\n","Hello, world!");return 0;}

…動きましたか?printfはcstdio(またはstdio.h)をincludeしないと使えないので、ヘッダファイルiosを辿っていくとどこかでcstdioをincludeしているはずです。
では、どこで?

  • ios 42行目
#include <bits/ios_base.h>
  • bits/ios_base.h 41行目
#include <bits/locale_classes.h>
  • bits/locale_classes.h 40行目
#include <string>
  • string 52行目
#include <bits/basic_string.h>
  • bits/basic_string.h 5417行目
#include <ext/string_conversions.h>
  • ext/string_conversions.h 41,43行目
#include <cstdlib>
#include <cstdio>

ということでした。途中でbits/stl_algobase.hやbits/stl_pair.hもincludeしているので、例えばmax/minやpairは使用できますが、sort(bits/stl_algo.h)は使用できません。