Boost logo

Boost :

Subject: [boost] [modularization] First goal clarification: have a DAG dependency graph?
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2014-06-08 03:19:40


Hi,

I would like what is the first goal of the modularization changes we are
doing.

IMO, the first one is to have modules that don't have dependency cycles,
that is they form a DAG.

Reducing the dependencies could be done later on, once we don't have cycles.

The next conflicting cycle is

Level 3 1/2

     mpl
     - config core predef preprocessor static_assert type_traits utility
     type_traits
     - config core mpl preprocessor static_assert typeof utility
     typeof
     - config core mpl preprocessor type_traits
     utility
     - config core mpl preprocessor static_assert throw_exception
type_traits

If declval moves from utility to type_traits we break the
type_traits->utility dependency.

Could we extract *temporally* common_type to a specific module?
These break the type_traits -> typeof dependency and the type_traits

I say temporary because once all the changes are done to avoid the
cycles, we can start looking for better ways to organize the modules
preserving always the DAG structure.

If we admit these changes we have to resolve this cycle type_traits<=>mpl.

We need surely to add every thing that allows to define a trait to
either to TypeTraits or to Core without using MPL of course.

However in order to see clearer on the dependencies that must be broken
to avoid this cycle, could these new file-to-module associations be applied?

Best,
Vicente


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