|
Шаблон классов Set1 предназначен для создания набора с одним объектом указанного типа: template < class A > struct Set1
{
A a;
Set1 () {}
Set1 ( const A & x ) : a(x) {}
Set1 & operator= ( const A & x ) { a = x; return *this; }
operator A () { return a; }
};
Шаблон классов Set2 предназначен для представления двойки объектов заданных типов: template < class A, class B = A > struct Set2
{
A a;
B b;
Set2 () {}
Set2 ( const A & x, const B & y ) : a(x), b(y) {}
};
Шаблон классов Set3 предназначен для представления тройки объектов заданных типов: template < class A, class B = A, class C = B > struct Set3
{
A a;
B b;
C c;
Set3 () {}
Set3 ( const A & x, const B & y, const C & z ) : a(x), b(y), c(z) {}
};
Шаблон классов Set4 предназначен для представления четвёрки объектов заданных типов:
template < class A, class B = A, class C = B, class D = C > struct Set4
{
A a;
B b;
C c;
D d;
Set4 () {}
Set4 ( const A & x, const B & y, const C & z, const D & w ) : a(x), b(y), c(z), d(w) {}
};
Обратите внимание, что, например, записи Set2<int> и Set2<int, int> обозначают один и тот же тип. Шаблоны Merge2 и Merge3 предназначены для создания типов состоящих из полей указанных классов:
template < class A, class B > struct Merge2 : public A, public B {};
template < class A, class B, class C > struct Merge3 : public A, public B, public C {};
Исходники находятся в файле Template.h. Наверх |