![]() |
Home | Libraries | People | FAQ | More |
boost::xpressive::value — value<>
is a lazy wrapper for a value that can be used in xpressive semantic actions.
// In header: <boost/xpressive/xpressive_fwd.hpp> template<typename T> struct value : public proto::extends< proto::terminal< T >::type, value< T > > { // public member functions value(); explicit value(T const &); T & get(); T const & get() const; };
Below is an example that shows where
is useful. value<>
sregex good_voodoo(boost::shared_ptr<int> pi) { using namespace boost::xpressive; // Use val() to hold the shared_ptr by value: sregex rex = +( _d [ ++*val(pi) ] >> '!' ); // OK, rex holds a reference count to the integer. return rex; }
In the above code, xpressive::val()
is a function that returns a value<>
object. Had val()
not been used here, the operation ++*pi
would have been evaluated eagerly once, instead of lazily when the regex match happens.
value
public member functionsvalue();Store a default-constructed
T
. explicit value(T const & t);Store a copy of
t
.
Parameters: |
|
T & get();This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
T const & get() const;Fetch the stored value.