Hi, > How does putting your own header at the top (vs. ~the bottom) help ensure > "a header file always includes all symbols it requires”?
Given an incomplete header // foo.hpp std::string f(); // foo.cpp #include “foo.hpp” #include <string> std::string f() { return {}; } I get % clang++ -fsyntax-only foo.cpp --std=c++11 In file included from foo.cpp:1: ./foo.hpp:1:1: error: use of undeclared identifier 'std' std::string f(); ^ 1 error generated. Swapping the include order makes this pass as `#include` is just textual replacement, and the `#include <string>` in `foo.cpp` would declare the symbol used in `foo.hpp`. Cheers, Benjamin