local 構造体テンプレート

template<typename T>
struct boost::xpressive::local

local<> は、local 自身に格納されている値への参照に対する遅延ラッパである。

テンプレートパラメータ

T -- 変数の型。

概要

// ヘッダ:<boost/xpressive/regex_actions.hpp>

template<typename T>
struct local : public proto::terminal::type< reference_wrapper< T > > {
  // 構築、コピー、解体
  local();
  explicit local(T const &);

  // 公開メンバ関数
  T & get();
  T const & get() const;
};

説明

以下は意味アクション内における 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 );

注釈

local という名前が示すとおり、local<> オブジェクトとそれらを参照する正規表現がローカルスコープを離脱することはない。local オブジェクトが格納する値は local<> の寿命が終わった時点で破壊され、local<> を保持する正規表現オブジェクトは懸垂参照とともに取り残される。

local 構築、コピー、解体の公開演算

local()

T をデフォルト構築した値を格納する。

explicit local(T const &t)

T をデフォルト構築した値を格納する。

パラメータ

t -- 初期値。

公開メンバ関数

T &get()

ラップしている値にアクセスする。

T const &get() const

利便性のためのメンバ関数多重定義。上記関数と受け取る引数が異なるのみ。