suppose I have a header foo.h like this:
foo.h
#ifndef FOO_H #define FOO_H #include #include \"non_standard_class.h\" std::string foo(
I would say it is, because otherwise your foo.cpp is relying on a detail of foo.h that may change. Obviously this is more of a problem with other .h files that aren't under your control, but I still do it for consistency sake.