An Improved Variant Type Based on Member Templates
By Fernando Cacciola, October 01, 2000
C has generic pointers and varying length argument lists for flexibility. C++ has templates for even more flexibility, and better type safety in the bargain.
October 2000/An Improved Variant Type Based on Member Templates/Listing 1
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 ;
} ;