On 08/04/2013 12:26 PM, Daniel James wrote:
Sorry, I confused dependents and dependencies there. The maintainer of Any can choose its dependencies. Btw. how did you get 35 for boost::any?
Sure. boost::any depends on boost::config and boost::type_traits. The maintainer of boost::any does not get to choose the dependencies of those. The boost::type_traits library depends on boost::mpl and boost::preprocessor, etc, and the mesh is formed. Breaking the dependency of boost::config on boost::core (as my patches do) is significant for boost::any, because boost::any then depends only on boost::type_traits for remove_reference and is_reference, and on boost::static_assert. However, the static_assert and is_reference are only needed inside an ifdef for a compiler which my patch already removes support for (BOOST_MSVC,<=1300). That leaves only remove_reference. One could imagine splitting type_traits into two libraries so that the simple, common and essential traits like remove_reference live in a library which does not depend on boost::mpl or boost::preprocessor. However, looking properly into all of that is the 'next step', and I don't want to take multiple steps forward before even completing the first step with the patches I've already posted. I want to get the first step completed both to establish some credibility for me in the boost community, and to establish some credibility for the boost community in me - I need to believe that 'real modularization' can proceed with reasonable effort before investing lots of my time in it :). Thanks, Steve.