BOOST_FUSION_DEFINE_STRUCT Это макрос, который может быть использован для создания всех необходимых шаблонов для определения и адаптации произвольной структуры в качестве моделислучайной последовательности доступа.
BOOST_FUSION_DEFINE_STRUCT(
(namespace0)(namespace1)...,
struct_name,
(member_type0, member_name0)
(member_type1, member_name1)
...
)
Приведенный выше макрос генерирует необходимый код, который определяет и адаптирует<struct_name>как модельСлучайной Последовательности Доступа. Последовательность<(namespace0)(namespace1)...>объявляет пространство имен для<struct_name>. Названо оно в честь<struct_name><namespace0::namespace1::...
struct_name>. Если дается пустая последовательность пространства имен (это макрос, который ни к чему не расширяется), структура помещается в глобальное пространство имен. Последовательность<(member_typeN,
member_nameN)>пар объявляет тип и имена каждого из членов структуры, которые являются частью последовательности.
Макро следует использовать в глобальном масштабе. Семантика выражения определяется только там, где она отличается от или не определена вПоследовательности случайного доступа.
#include <boost/fusion/adapted/struct/define_struct.hpp>
#include <boost/fusion/include/define_struct.hpp>
BOOST_FUSION_DEFINE_STRUCT(
(demo), employee,
(std::string, name)
(int, age))