標準でどのヘッダがどのヘッダを include しているかを調べてみた

std::endl って、どのヘッダで定義されているか知っていますか?
と思った人はハズレです。実は std::endl は で定義されてます。
これって を include するだけだと標準に準拠した動作にならないんじゃね?とか思ったのですけど、どうやら も include することが決まっているようです。


ということで、どのヘッダがどのヘッダを include するのかが気になったので調べてみました。


調べ方は、仕様書の各 synopsis にある #include <...> の部分を見ました。
これが必ず include されることは、 §17.6.5.2¶1 によって決まっているようです。


以下のような結果になりました。

header include
,
<map>
,,,

意外に全然 include してないですね。 が特殊だったというだけのようです。
ということでちゃんとこれからも1個1個 include するようにしましょう。