value 構造体テンプレート

template<typename T>
struct value

value<> は、xpressive の意味アクションで使用できる値の遅延ラッパである。

テンプレートパラメータ

T -- 格納する値の型。

概要

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

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

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

説明

以下は value<> を使用すると便利な例である。

sregex good_voodoo(boost::shared_ptr<int> pi)
{
    using namespace boost::xpressive;
    // val() を使用して shared_ptr を値で保持する:
    sregex rex = +( _d [ ++*val(pi) ] >> '!' );
    // OK 、rex は整数に対する参照カウントを保持する。
    return rex;
}

上のコードにおいて、xpressive::valvalue<> オブジェクトを返す関数である。val を使用しないと ++*pi の演算は正規表現がマッチしたときに遅延評価されるのではなく、一度だけ積極評価される。

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

value()

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

explicit value(T const &t)

t のコピーを格納する。

パラメータ

t -- 初期値。

value の公開メンバ関数

T &get()

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

T const &get() const

格納した値にアクセスする。