// ヘッダ:<boost/xpressive/regex_actions.hpp
>
template<typename T> struct :cpplocal
: public proto::terminal::type< reference_wrapper< T > > { // 構築、コピー、解体 <local.construct-copy-destruct>
:cpp~local::local
(); explicit :cpp~local::local
(T const &);
//
公開メンバ関数 <local.public-member-functions>
T & :cppget
(); T const & :cppget
() const;
};
以下は意味アクション内における :cpp!local\<>
の使用例である。 :
using namespace boost::xpressive;
local<int> i(0);
std::string str("1!2!3?");
// 感嘆符付きの数字を数える。
// 疑問符付きのものは数えない。
sregex rex = +( _d [ ++i ] >> '!' );
regex_search(str, rex);
assert( i.get() == 2 );
Note
local という名前が示すとおり、:cpp!local\<>
オブジェクトとそれらを参照する正規表現がローカルスコープを離脱することはない。:cpp!local
オブジェクトが格納する値は :cpp!local\<>
の寿命が終わった時点で破壊され、:cpp!local\<>
を保持する正規表現オブジェクトは懸垂参照とともに取り残される。