Boost.Phoenix の if 文の戻り値を let を使用して返す
前回の続き。
statement の if 文ないで、let で定義するローカル変数に結果を代入して、値を返すことが出来ます。
[ソース]
#include <boost/phoenix/core.hpp> #include <boost/phoenix/operator.hpp> #include <boost/phoenix/scope.hpp> #include <boost/phoenix/statement/if.hpp> #include <boost/function.hpp> #include <string> #include <iostream> int main(){ namespace phx = boost::phoenix; using phx::arg_names::arg1; using phx::local_names::_a; // if 文の中で代入して、返す boost::function<std::string(int)> f = phx::let(_a = phx::val(""))[ if_(arg1 >= 0)[ _a = phx::val("true") ] .else_[ _a = phx::val("false") ], _a ]; std::cout << f(3) << std::endl; std::cout << f(-3) << std::endl; std::cout << f(0) << std::endl; return 0; }
[出力]
true false true
[boost]
- ver 1.47.0