I am reading Herb Sutter\'s More Exceptional C++ and item 37 on forward declarations says:
More Exceptional C++
Never #include a
#include
When a header changes, programs affected change. Changed programs need to be tested. Being selective minimized exposure and hence testing.