| 123456789101112131415161718192021222324252627282930313233 |
- #define assert(E) if(!(E)) return 1;
- template<class T>
- class zero_init
- {
- public:
- zero_init( )
- : val( static_cast<T>(0) ) { }
- zero_init( T val ) : val( val )
- { }
- operator T & ( ) { return val; }
- operator T ( ) const { return val; }
- private:
- T val;
- };
- int someFunc()
- {
- zero_init<int*> p; assert( p == 0 );
- p = new int(7);
- assert( *p == 7 );
- delete p;
- zero_init<int> i; assert( i == 0 );
- i = 7;
- assert( i == 7 );
- switch( i ) { }
- int *vp = new int[i];
- return 0;
- }
|