Listing 2: Definition of class variant1_t
// This variant copies the original // value into its own data to // preserve the value when the // original variable goes out of scope. struct variant1_t { variant1_t():data(NULL){} ~variant1_t(){ free(data); } template<typename T> variant1_t ( T v ) :data(malloc(sizeof(T))) { memcpy ( data , &v , sizeof(T)); } template<typename T> operator T () const { return * reinterpret_cast<T*>(data); } void* data ; } ; // usage: variant1_t _int ( 2 ) ; variant1_t _dbl ( 3.14 ) ; cout << (int) _int << endl ; cout << (double)_dbl << endl ;