Andrey Semashev wrote:
In addition, the following can be duplicated inside to reduce dependencies:
- mpl::if_, if_c, eval_if - detail/is_incrementable.hpp - remove_cv
and so on.
I like the general idea but I'm worried about needing to duplicate things. The list is short now, but I'm sure it will get bigger. Maybe that's a sign that something that needs these components do not fit into Boost.Core.
This duplication is necessary because many of the candidates for Core that I inspected #include those things. The list cannot get much bigger on its own; it's based on what is in the headers now. Those headers are old and are a relic of a pre-modular world, when you didn't need write permissions to Detail to add something ostensibly useful there. To reiterate, I'm not suggesting that we duplicate for the fun of it; I'm only suggesting duplication when it's a necessary prerequisite of moving an existing header into the new library. We will, of course, evaluate every such addition on a case by case basis. Robert Ramey wrote:
Duplication is going to start creating it's own set of problems when the copies (inevitably) diverge.
This is not likely to happen. Most of these utilities haven't been touched at all for a long time, and many, such as if_, eval_if, remove_cv are trivial and their specification is very clear. There's not much room for divergence.