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 Holder {
  // previously defined members
  //...
  public:
    Holder (Trule<T> const& t) {
        ptr = t.ptr;
        const_cast<Trule<T>&>(t).ptr = 0;
    }
    Holder<T>& operator= (Trule<T> const& t) {
        delete ptr;
        ptr = t.ptr;
        const_cast<Trule<T>&>(t).ptr = 0;
        return *this;
    }
};