1) I don't understand this part of reference_wrapper:
template<class T> class reference_wrapper
{
operator T& () const { return *t_; }
};
Could someone please explain it?
reference_wrapper<T> is a functor that returns T&. This is exactly
what operator() does.