What are some techniques for limiting compilation dependencies in C++ projects?
In a C++ project, compilation dependencies can make a software project difficult to maintain. What are some of the best practices for limiting dependencies, both within a module and across modules?