On Sat, Apr 7, 2018, 12:58 Daniel James via Boost
On 7 April 2018 at 09:58, Vicente J. Botet Escriba via Boost
wrote: Le 25/03/2018 à 11:18, Antony Polukhin via Boost a écrit :
Hello,
I've noted that many libraries depend on container_hash while it depends only on a single header from Boost.Detail library https://pdimov.github.io/boostdep-report/master/module-levels.html
Can we move "boost/detail/container_fwd.hpp" into Boost.Core or into Boost.ContainerHash? This will break the circular dependency, move the Boost.ContainerHash on level 4 and improve levels of Intrusive, Container, CircularBuffer, Unordered, Algorithm, Test, TypeIndex, Any, Function, Functional, ScopeExit, Signals, MultiArray, Variant.
Yes, please, move it to a specific Boost.ContainerHash.
I don't mind having more components, if we reach to manage better the dependencies.
IMO the problem is that detail depends on MPL. It really shouldn't be an expensive dependency, and shuffling things around is just causing extra complication while avoiding dealing with the real problem. Most uses of MPL can be replaced with more lightweight functionality. I think the only exception is the support for MPL lambdas which I don't think is necessary. I haven't checked but there's a decent chance they're not used at all in Boost (and since it's detail they aren't for public use), and I don't think the workarounds are required for any of the compilers in use nowadays anyway.
In that case I'd love to see both changes: * dropping circular dependency container_hash <=> detail * dropping dependency of detail on mpl With both changes much more libraries improve in dependency levels.