Robert Ramey wrote:
The statement "I believe that this rule should be very easy to follow" is definately true. I'm quite sure I know what I believe.
Not when you start to employ pre-compiled headers. e.g. with 1.32 we were require to include serialization/shared_ptr before shared_ptr. We had shared_ptr in our pre-compiled header which meant we had to have serialization/shared_ptr in our pre-comiled header. But then this required us to put all archive types we may use above the serialization headers. This is undesirable but we have had to do it for 1.32 because of the shared_ptr problem. I understand the shared_ptr problem is gone with 1.33, but I'm just trying to point out that when you start using things like pre-compiled headers and such which are pretty much essential for build times of large scale projects rather than just unit tests, then header dependency orders can become a big issue and I believe these need addressing. A library that forces dependency orders on end users is not easy to use in large-scle projects IMHO and the issues we are hitting with serialization demonstrates that. Cheers Russell