#include template class Box { T m_obj; public: Box( T input ) : m_obj(input) {}; T operator!() { return (T) !m_obj; } }; class dog { int numhairs; public: dog( int nh ) : numhairs(nh) {}; dog operator!() { dog *ralph; ralph = new dog(1); return *ralph; }; void print() {cout << "numhairs = " << numhairs << endl;}; }; void main() { int i = 1; Box bint( i ); int j = !bint; cout << "J is " << j << endl; cout.flush(); dog lassie( 10000 ); Box dobj( lassie ); dog jessie = !dobj; jessie.print(); };