...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The library is organized into layers of modules, with each module addressing a particular area of responsibility. A module may not depend on modules in higher layers.
The library is organized in three layers:
The entire library is found in the "boost/fusion" directory. Modules are organized in directories. Each module has its own header file placed in the same directory with the actual module-directory. For example, there exists "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". Everything, except those found inside "detail" directories, is public.
There is also a "boost/fusion/include/" directory that contains all the headers to all the components and modules. If you are unsure where to find a specific component or module, or don't want to fuss with hierarchy and nesting, use this.
The library is header-only. There is no need to build object files to link against.
If, for example, you want to use list, depending on the granularity that you desire, you may do so by including one of
#include <boost/fusion/container.hpp> #include <boost/fusion/include/container.hpp> #include <boost/fusion/container/list.hpp> #include <boost/fusion/include/list.hpp>
The first includes all containers The second includes only list [4] .
[4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.