Boost logo

Boost :

Subject: [boost] A few more critical dependencies
From: Peter Dimov (lists_at_[hidden])
Date: 2014-06-02 17:04:41


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.

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.)

generator_iterator.hpp perhaps needs to be moved to iterator.

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.

Comments? Objections?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk