| Home | Libraries | People | FAQ | More

## Struct template local

boost::xpressive::local — `local<>` is a lazy wrapper for a reference to a value that is stored within the local itself. It is for use within xpressive semantic actions.

## Synopsis

    // In header: <boost/xpressive/xpressive_fwd.hpp>

    template<typename T>
    struct local : public proto::terminal::type< reference_wrapper< T > > {
      // construct/copy/destruct
      local();
      explicit local(T const &);

      // public member functions
      T & get();
      T const  & get() const;
    };

## Description

Below is an example of how to use `local<>` in semantic actions.

    using namespace boost::xpressive;
    local<int> i(0);
    std::string str("1!2!3?");
    // count the exciting digits, but not the
    // questionable ones.
    sregex rex = +( _d [ ++i ] >> '!' );
    regex_search(str, rex);
    assert( i.get() == 2 );

| Note
As the name "local" suggests, `local<>` objects and the regexes that refer to them should never leave the local scope. The value stored within the local object will be destroyed at the end of the `local<>'s` lifetime, and any regex objects still holding the `local<>` will be left with a dangling reference.

### Template Parameters

1.     typename T

   The type of the local variable.

### `local` public construct/copy/destruct

1.     local();

   Store a default-constructed value of type `T`.

2.     explicit local(T const & t);

   Store a default-constructed value of type `T`.

   Parameters: |
   `t` | The initial value.

### `local` public member functions

1.     T & get();

   Fetch the wrapped value.

2.     T const  & get() const;

   This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.