// ヘッダ:<boost/xpressive/regex_actions.hpp
>
template<typename PolymorphicFunctionObject> struct :cpp~::boost::xpressive::function
{ // 型 typedef proto::terminal< PolymorphicFunctionObject >::type type; };
通常の多態的関数オブジェクト型を xpressive の意味アクションで使用するオブジェクトを宣言する型に変換するには、:cppxpressive::function\<>
を使用する。
例えば :cpp!xpressive::push_back
グローバルオブジェクトは、値をコンテナに追加する遅延アクションを作成するのに使用する。これは :cppxpressive::function\<>
を使って以下のように定義する: :
xpressive::function<xpressive::op::push_back>::type const push_back = {};
ここで :cppop::push_back
は、その第 2 引数を第 1 引数へ追加する通常の関数オブジェクトである。この定義により、:cpp!xpressive::push_back
を以下のように意味アクション内で使用できる: :
namespace xp = boost::xpressive;
using xp::_;
std::list<int> result;
std::string str("1 23 456 7890");
xp::sregex rx = (+_d)[ xp::push_back(xp::ref(result), xp::as<int>(_) ]
>> *(' ' >> (+_d)[ xp::push_back(xp::ref(result), xp::as<int>(_) ) ]);