The following code example is taken from the book
 
  C++ Templates - The Complete Guide
 by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
 
  © Copyright David Vandevoorde and Nicolai M. Josuttis 2002
template <typename T>
class TypeOp <T&> {       // partial specialization for references
  public:
    typedef T &                         ArgT;
    typedef typename TypeOp<T>::BareT   BareT;
    typedef T const                     ConstT;
    typedef T &                         RefT;
    typedef typename TypeOp<T>::BareT & RefBareT;
    typedef T const &                   RefConstT;
};