BOOST_FUSION_DEFINE_STRUCT

Boost.Fusionには、以前からBOOST_FUSION_ADAPT_STRUCTというユーザー定義の構造体をFusionのシーケンスコンテナとして扱うためのマクロがありましたが、Boost 1.43.0から構造体ごと定義するBOOST_FUSION_DEFINE_STRUCTマクロが入りました。

#include <iostream>
#include <string>
#include <boost/fusion/include/define_struct.hpp>
#include <boost/fusion/include/algorithm.hpp>

BOOST_FUSION_DEFINE_STRUCT(
    (ns)(info), person,
    (std::string, name)
    (int, age)
)

struct disp {
    typedef void result_type;

    template <class T>
    void operator()(const T& x) const
    {
        std::cout << x << std::endl;
    }
};

int main()
{
    ns::info::person p;
    p.name = "Akira";
    p.age = 25;

    boost::fusion::for_each(p, disp());
}
Akira
25

他にも、Fusionの連想コンテナとして扱うためのマクロが追加されていますが、これは未調査です。



参照:

BOOST_FUSION_DEFINE_STRUCT

ユーザー定義のクラスをFusionのコンテナ(タプル)として使用する