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