質問: なぜgcc 4.6にSTLヘッダーを含める必要はありませんか? 私はgcc 4.6をC ++ 0xモードで使っています。私は、ベクトルや他のSTLコンテナを使用しても、関連するヘッダファイルを含まないと、コンパイルエラーが発生しないようです。これは設計によるものでしたか?好ましい方法は何ですか? 私はいつも明示的にstd名前空間を指定しています...しかし、私はいつも、名前空間が指定されていてもヘッダをインクルードしなければならないと考えました。 コンパイラの助けを借りずに100%の時間を得ることが疑わしいので、ヘッダーを含めることが望ましい場合、これは奇妙なデフォルトのようです。
回答: コードに必要なすべての標準ヘッダーを常に含める必要があります。 残念なことに、標準ヘッダーには他の標準ヘッダーを含めることができます。その場合、正しいヘッダーを含めずに何かを使用することができます。それに頼ることはできません。異なるライブラリ実装に変更した場合、インクルードを修正する必要があるかもしれません。 あなたが正しいことを常に得るための簡単な方法はありません。最も簡単なオプションは、興味のあるすべてのライブラリ実装でコードがコンパイルされているかどうかをテストすることです。