struct variant0_t { variant0_t():data(NULL){} template<typename T> variant0_t(const T& v) : data ( &v ) {} template<typename T> operator T () const { return * reinterpret_cast<const T*>(data); } const void* data ; } ;