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