Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Struct _byref

boost::proto::_byref — A unary callable PolymorphicFunctionObject that wraps its argument in a boost::reference_wrapper<>.

Synopsis

// In header: <boost/proto/transform/arg.hpp>


struct _byref :  proto::callable {
  // member classes/structs/unions
  template<typename This, typename T> 
  struct result<This(T &)> {
    // types
    typedef boost::reference_wrapper< T > const type;
  };
  template<typename This, typename T> 
  struct result<This(T)> {
    // types
    typedef boost::reference_wrapper< T const  > const type;
  };

  // public member functions
  template<typename T> 
    boost::reference_wrapper< T > const operator()(T &) const;
  template<typename T> 
    boost::reference_wrapper< T const > const operator()(T const &) const;
};

Description

Example:

proto::terminal<int>::type i = {42};
boost::reference_wrapper<proto::terminal<int>::type> j
  = proto::when<proto::_, proto::_byref(_)>()(i);
assert( boost::addressof(i) == boost::addressof(j.get()) );

_byref public member functions

  1. template<typename T> 
      boost::reference_wrapper< T > const operator()(T & t) const;

    Wrap the parameter t in a boost::reference_wrapper<>

    Parameters:

    t

    The object to wrap

    Returns:

    boost::ref(t)

    Throws:

    Will not throw.
  2. template<typename T> 
      boost::reference_wrapper< T const > const operator()(T const & t) const;

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


PrevUpHomeNext