Boost 1.48.0 beta1

が公開されたらしいです。

とりあえず Boost.Fusion の std::tuple アダプタを試してみました。

[ソース]

#include <boost/fusion/include/for_each.hpp>
#include <boost/fusion/adapted/std_tuple.hpp>
#include <boost/fusion/include/make_fused.hpp>
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <tuple>
#include <string>


template<typename F, typename ...Args>
auto
apply(F func, std::tuple<Args...> const& t)
->decltype(boost::fusion::make_fused(func)(t)){
    return boost::fusion::make_fused(func)(t);
}

double
func(int a, float b, std::string const& c){
    return a + b + c.size();
}

int
main(){
    using boost::lambda::_1;

    auto t = std::make_tuple(42, 3.14f, "hoge");

    auto result = apply(&func, t);
    std::cout << result << std::endl;

    boost::fusion::for_each(t, std::cout << _1 << ",");

    return 0;
}

[出力]

49.14
42,3.14,hoge,

うむうむ、良い感じですね。
今後もどんどん C++11 に対応して行ってくれると嬉しいですね。
あと当然ですが msvc2010 だと動かないのでご注意を。

[boost]

  • ver 1.48.0 beta1