STRUCT _BYREF(3)

NAME
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.