
Le 02/06/14 23:04, Peter Dimov a écrit :
At present, we have three dependencies that we can easily cut and doing so will be very beneficial:
1. type_traits now depends on utility only because
utility: <boost/utility/declval.hpp> from <boost/type_traits/common_type.hpp> from <boost/type_traits/detail/common_type_imp.hpp> from <boost/type_traits/is_copy_constructible.hpp> from <boost/type_traits/is_nothrow_move_assignable.hpp> from <boost/type_traits/is_nothrow_move_constructible.hpp>
Since declval.hpp itself depends on type_traits (add_rvalue_reference), it can't go to core and the most logical place for it is type_traits itself.
Agreed. declval is used much of the time to build traits.
2. utility depends on iterator because
iterator: <boost/iterator.hpp> from <boost/operators.hpp> <boost/iterator/iterator_facade.hpp> from <boost/generator_iterator.hpp>
boost/iterator.hpp can be moved to core in all its former glory (and probably replaced by a one-liner, using std::iterator.)
I would move iterator to workaround (config?) instead of moving it to Core.
generator_iterator.hpp perhaps needs to be moved to iterator.
+1.
3. mpl depends on detail because
detail: <boost/detail/endian.hpp> from <boost/mpl/string.hpp> <boost/detail/lightweight_test.hpp> from <boost/mpl/aux_/test.hpp>
That last one is just because lightweight_test.hpp hasn't been removed from Detail yet; let me know if I should do that.
boost/detail/endian.hpp is just a forwarding header that includes <boost/predef/detail/endian_compat.h>. We should move it to Predef. I agree with Rene here, replacing the include and the macros in mpl would remove the dependency, but it needs the approval of the author. Moving the file detail/endian.hpp to the module Predef don't needs any change. Just do a different assignation.
Vicente