The goal is to create two 'modules' or libraries:
We had that originally. They were called "detail" and "core".
How do we describe those libraries to users? Those might be the Frequently Questioned Answers:
A: It is a Boost library that you should not use. Q: If it is not useful, why does it exist?
A: It is used internally by several Boost libraries. Q: If it is so useful, why should I not use it too?
I prefer to have no such "detail" libraries at all. Everything that is useful to a broader audience should be in utility.
Funnily enough I was about to suggest just that: lets do away with detail and have: core: everything in: boost/detail/ boost/pending/ boost/utility/ That has no dependencies. Utility: As above, but with dependencies (mostly to mpl/pp/type_traits). throw_exception.hpp and dependencies should go in core too, as would a few headers under boost/ such as cstdint.hpp etc. John.