Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-01-23 12:50:15


I propose a very simple patch to ref.hpp which allows one to portably
determine whether a type is a reference_wrapper, and to extract its "value
type":

----
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
namespace detail
{
  struct reference_wrapper_base {};
}
#endif
template<class T> class reference_wrapper
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
        : public detail::reference_wrapper_base
#endif
{ 
public:
    typedef T value_type;
    explicit reference_wrapper(T & t): t_(t) {}
    operator T & () const { return t_; }
    T & get() const { return t_; }
private:
    T & t_;
    reference_wrapper & operator= (reference_wrapper const &);
};
----
There's a bunch of other code needed to make this useful, but it introduces a dependency on type_traits in the no-partial-spec. case, so I guess that should go in a separate file.
I happen to need something exactly like this for Boost.Python. Thoughts?
-Dave
===================================================
  David Abrahams, C++ library designer for hire
 resume: http://users.rcn.com/abrahams/resume.html
        C++ Booster (http://www.boost.org) 
          email: david.abrahams_at_[hidden]
===================================================

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk