Шаблон Def

Шаблон Def предназначен для того, чтобы образовывать производный класс от заданного и добавлять к нему член isDef. Этот член позволяет узнать определён объект или нет:

template < class T > struct BaseType { typedef T type; };
template <> struct BaseType < nat > { typedef Set1 < nat > type; };
template <> struct BaseType < bool > { typedef Set1 < bool > type; };
template <> struct BaseType < double > { typedef Set1 < double > type; };

template < class T > 
struct Def : public BaseType < T >::type
{
    typedef typename BaseType < T >::type base;
    bool isDef;

    Def () : isDef(false) {}
    Def ( const T & v, bool d = true ) : base ( v ), isDef ( d ) {}
    Def & operator = ( const T & v ) { isDef = true; *(base*) this = v; return *this; }
};

Описание шаблона Set1 находится здесь.

Исходники находятся в файле Template.h.

Наверх