タイトルの通りなのですが、それでは分かりにくいと思いますので、簡単な例を挙げさせていただきます。
<iostream>
をインクルードしているソースファイルにてstd::string
を使うとします。
通常std::string
を使うには<string>
のインクルードが必要です。
しかし、<iostream>
をインクルードするだけで内部的に<string>
もインクルードされているようで、<string>
をインクルードしなくてもコンパイルエラーは起こりません。
cpp
1#include <iostream> 2// #include <string> // なくてもコンパイルエラーにはならない 3 4int main() 5{ 6 std::string s{"abc"}; 7 std::cout << s << std::endl; 8 return 0; 9}
そこで、
- 不要なインクルードは減らすという点で
<string>
のインクルードは省略してもよいのか
あるいは、
- 前方宣言では済まない具体的な使い方をするという点で明示的に
<string>
をインクルードするべきか
を久しく疑問に感じていました。
私は今のところ後者のスタイルを採っていますが、皆様のご意見をうかがいたく思い質問させていただきます。よろしくお願いします。
追記
またタイプエイリアス、特にstd::size_t
の<cstddef>
等の些細なものについてもうかがいたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/10 08:31
2018/03/12 09:36
2018/03/13 15:21