34 lines
503 B
C++
34 lines
503 B
C++
|
|
||
|
#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;
|
||
|
}
|