Skip to content

Latest commit

 

History

History
45 lines (27 loc) · 1.72 KB

function.rst

File metadata and controls

45 lines (27 loc) · 1.72 KB

function 構造体テンプレート

概要

// ヘッダ:<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>(_) ) ]);