BOOST_FUSION_ADAPT_ASSOC_STRUCT Это макрос, который может быть использован для создания всех необходимых шаблонов, чтобы сделать произвольной структурой модельслучайной последовательности доступаиассоциативной последовательности.
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
struct_name,
([member_type0,] member_name0, key_type0)
([member_type1,] member_name1, key_type1)
...
)
Приведенный выше макрос генерирует необходимый код для адаптации<struct_name
>в качестве моделиСлучайной Последовательности ДоступаиАссоциативной Последовательности. Последовательность<([member_typeN,]
member_nameN,
key_typeN)
>кортежей объявляет тип, имя и ключевой тип каждого из элементов структуры, которые являются частью последовательности.
когда член_тип N опущен или установлен на авто, тип выведен с помощью Boost. Типоф.
Макрос должен использоваться в глобальном масштабе, и<struct_name
>должно быть полное название структуры, подлежащей адаптации.
#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;
}
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
demo::employee,
(name, keys::name)
(age, keys::age))
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
demo::employee,
(auto, name, keys::name),
(auto, age, keys::name))