On Sunday 08 June 2014 04:12:26 Peter Dimov wrote:
Andrey Semashev wrote:
I think, at first it will be simply enough to just move the components to the new submodule.
Even that is going to not be as easy as it sounds. Look at boost/mpl/and.hpp, for example. And it's not clear whether, if we move a component into MPL.Core and remove all workarounds, this will not break components in MPL that depend on those workarounds for some reason.
In short, it looks like a nontrivial project. Maybe it's easier than it appears. I don't know.
Eyes are afraid, hands are doing. :) Here is my first take on this: https://github.com/Lastique/mpl_core/tree/develop https://github.com/Lastique/mpl/tree/develop I moved the files required for the root headers listed in root_list.txt to MPL.Core. Basically, its all numeric wrappers (bool_, int_, etc.), operations on them, if_, eval_if, void_ and a few utils that are likely used in libraries: assert.hpp, print.hpp and identity.hpp. The complete list of what was moved is in move_headers.txt. The resulting MPL.Core depends on Config, Preprocessor and TypeTraits. From TypeTraits it only needs is_class.hpp in mpl/has_xxx.hpp. That dependency is only used to work around Borland bugs. I'm inclined to just remove that workaround. Alternatively, this trait could be replicated in MPL.Core just for this one compiler. Not a bad starting point, IMHO.