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