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