...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
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.
BOOST_FUSION_ADAPT_ASSOC_STRUCT( struct_name (member_type0, member_name0, key_type0) (member_type1, member_name1, key_type1) ... )
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.
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp> #include <boost/fusion/include/adapt_assoc_struct.hpp>
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))