名前付きタプルが欲しい

メンバ変数だけのクラスとか定義したくないんじゃー。
と、いうことで Boost.Fusion の map と Boost.MPL の string でやってみた。

[ソース]

#include <boost/fusion/include/map.hpp>
#include <boost/fusion/include/make_map.hpp>
#include <boost/fusion/include/at_key.hpp>
#include <boost/mpl/string.hpp>
#include <boost/typeof/typeof.hpp>
#include <iostream>

int
main(){
    namespace f = boost::fusion;
    namespace m = boost::mpl;

    BOOST_AUTO(person, (f::make_map<m::string<'name'>, m::string<'age'> >("homu", 14)));

    std::cout << f::at_key<m::string<'name'> >(person) << std::endl;
    std::cout << f::at_key<m::string<'age' > >(person) << std::endl;

    return 0;
}

[出力]

homu
14

型を定義するのがちと手間ですが、やってできないことはない感じ。
4文字までと割りきってしまって、簡単にラップすれば分かりやすくなりそうな?

[boost]

  • ver 1.49.0