Boost C++ Libraries

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

BOOST_FUSION_ADAPT_ASSOC_STRUCT

Description

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

Synopsis

BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    struct_name,
    (member_type0, member_name0, key_type0)
    (member_type1, member_name1, key_type1)
    ...
    )

Semantics

The above macro generates the necessary code to adapt struct_name as a model of Random Access Sequence and Associative Sequence. The sequence of (member_typeN, member_nameN, key_typeN) triples declare the type, name and key type of each of the struct members that will be 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 converted.

Header

#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
#include <boost/fusion/include/adapt_assoc_struct.hpp>

Example

namespace demo
{
    struct employee
    {
        std::string name;
        int age;
    };
}

namespace keys
{
    struct name;
    struct age;
}

// demo::employee is now a Fusion sequence
// It is also an associative sequence with
// keys keys::name and keys::age present.
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    demo::employee,
    (std::string, name, keys::name)
    (int, age, keys::age))

PrevUpHomeNext