Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.



BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT is a macro that can be used to generate all the necessary boilerplate to make an arbitrary template struct a model of Random Access Sequence and Associative Sequence.

    (struct_name) (specialization_param0)(specialization_param1)...,
    (member_type0, member_name0, key_type0)
    (member_type1, member_name1, key_type1)

The above macro generates the necessary code to adapt struct_name or an arbitrary specialization of struct_name as a model of Random Access Sequence and Associative Sequence. The sequence (template_param0)(template_param1)... declares the names of the template type parameters used. The sequence (specialization_param0)(specialization_param1)... declares the template parameters of the actual specialization of struct_name that is adapted as a fusion sequence. The sequence of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key type of each of the struct members that are part of the sequence.

The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be adapted.

#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
#include <boost/fusion/include/adapt_assoc_struct.hpp>
namespace demo
    template<typename Name, typename Age>
    struct employee
        Name name;
        Age age;

namespace keys
    struct name;
    struct age;

// Any instantiated demo::employee is now a Fusion sequence.
// It is also an associative sequence with
// keys keys::name and keys::age present.
    (demo::employee) (Name)(Age),
    (Name, name, keys::name)
    (Age, age, keys::age))