//Foo.h
#include <string>
struct Foo;
//main.cpp
#include "Foo.h"
int main(int argc, char *argv[])
{
std::string s = "hello";
}
The problem I have with this code is that #include <string>
leaks into main.cpp. #include <string>
is needed in main.cpp to compile but if in a future version Foo.h
doesn't need string anymore, main.cpp will not compile.
Is there a way to prevent this?
Edit: I know that I can manage this on my own by always including every file that I need but I am working in a team and everyone does their own thing and it is a complete mess. So I was wondering if there is a way to force this.
Comments seem to indicate that we have to manage it manually. I guess this answers my question.