Boost.Fusionのアルゴリズムとジェネリックラムダ

C++14で導入されたジェネリックラムダはBoost.Fusionのためにあるようなものですが、この組み合わせをまだ動かしていなかったので、検証。

#include <iostream>
#include <boost/fusion/include/make_vector.hpp>
#include <boost/fusion/include/for_each.hpp>

int main()
{
    namespace fusion = boost::fusion;
    fusion::for_each(fusion::make_vector(1, "hello", 3.14), [](const auto& x) {
        std::cout << x << std::endl;
    });
}

出力:

1
hello
3.14

無事に動いた。

確認した環境:

  • Boost 1.57.0
  • GCC 4.9 (-std=c++1yオプション, 5.0からは-std=c++14オプション)
  • Clang 3.4 (-std=c++1yオプション, 3.5からは-std=c++14オプション)