For example Visual studio includes <utility> even if you didn’t explicitly type #include <utility>
Is there a preprocessor directive or some option to include only what is explicitly told by programer?.
Just an hypothetical example:
#include <vector>
int main()
{
std::vector<int> x;
std::move(x); // Did I ask for <utility> ? No I didn't
return 0;
}
Visual studio doesn’t include
<utility>unless it’s required by other included std headers.In VS10, including only
<vector>pulls in another 74 headers directly and indirectly. The trail to<utility>is:<vector>includes<memory>which includes<xmemory>which includes<xutility>which includes<utility>.