|
Шаблон 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. Наверх |