LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
misc::generic_variant< T0_, > Class Template Reference

#include <generic-variant.hh>

Inheritance diagram for misc::generic_variant< T0_, >:
Collaboration diagram for misc::generic_variant< T0_, >:

Public Types

typedef generic_variant< T0_,
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)> 
self_type
 The type of this variant.
typedef boost::variant< T0_,
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)> 
super_type
 Super type.

Public Member Functions

template<typename U >
self_typeoperator= (const U &)
 generic_variant ()
template<typename U >
 generic_variant (const U &rhs)
 operator T0_ & ()
 Convert this variant to a value of type U.

Detailed Description

template<typename T0_, BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T)>
class misc::generic_variant< T0_, >

A wrapper over boost::variant supporting conversion operators.

Preconditions:

  • Each type must be unique.
  • No type may be const-qualified.

Proper declaration form: misc::generic_variant<types> (where types is a type-sequence) or misc::generic_variant<T0,T1,...,Tn> (where T0 is NOT a type-sequence)

Member Typedef Documentation

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
typedef generic_variant<T0_, BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)> misc::generic_variant< T0_, >::self_type

The type of this variant.

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
typedef boost::variant<T0_, BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)> misc::generic_variant< T0_, >::super_type

Super type.

Constructor & Destructor Documentation

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
misc::generic_variant< T0_, >::generic_variant ( )

Constructors.

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
template<typename U >
misc::generic_variant< T0_, >::generic_variant ( const U &  rhs)

Member Function Documentation

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
misc::generic_variant< T0_, >::operator T0_ & ( )

Convert this variant to a value of type U.

This conversion rely on boost::get. In particular, if the conversion fails, a boost::bad_get exception is thrown.

template<typename T0_ , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T) >
template<typename U >
self_type& misc::generic_variant< T0_, >::operator= ( const U &  )

The documentation for this class was generated from the following file: