Boost.Phoenix lambda のスコープ内で、スコープ外の変数を参照する

let と同じで、変数に引数を代入して使用します。

[ソース]

#include <boost/phoenix.hpp>
#include <iostream>

int
main(){
    namespace phx = boost::phoenix;
    using phx::arg_names::arg1;
    using phx::arg_names::arg2;
    using phx::local_names::_a;
    
    int array[] = {0, 1, 2, 3, 4};
    // 第二引数を _a に代入して使用する
    phx::for_each(arg1, phx::lambda(_a = arg2)[
        std::cout << _a << arg1 << std::endl
    ])(array, "value:");

    return 0;
}

[出力]

value:0
value:1
value:2
value:3
value:4

[boost]

  • ver 1.47.0