CMake/Tests/CompileFeatures/cxx_contextual_conversions.cpp

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;
}