![]() |
![]() ![]() ![]() ![]() |
![]() |
The MPL Reference Manual: inherit_linearlyBoost , ,
|
||||||||||||||||||||||||
| Front Page / Metafunctions / Miscellaneous / inherit_linearly |
template<
typename Types
, typename Node
, typename Root = empty_base
>
struct inherit_linearly
: fold<Types,Root,Node>
{
};
Удобная обертка дляскладываниядля использования в контексте композиции класса, управляемой последовательностями. Возвращает результат последовательное применение двоичногоУзелВ результате предыдущегоУзелпризывКорень, если это первый призыв) и каждый тип вПоследовательностьТипыв порядке.
#include <boost/mpl/inherit_linearly.hpp>
| Parameter | Requirement | Description |
|---|---|---|
| Типы | Последовательность | Виды наследования от. |
| Узел | Бинарное выражениеLambda Expression | Производная метафункция. |
| Корень | Тип класса | Тип, который должен быть помещен в корень иерархии классов. |
Для любыхпередней последовательноститипов, двоичнойлямбда-выраженияузлаи произвольного типа классакорня:
typedef inherit_linearly<types,node,root>::type r;
| Return type: | A class type. |
|---|---|
| Semantics: | Equivalent to typedef fold<types,root,node>::type r; |
Точноразмер
template< typename T > struct tuple_field
{
T field;
};
template< typename T >
inline
T& field(tuple_field<T>& t)
{
return t.field;
}
typedef inherit_linearly<
vector<int,char const*,bool>
, inherit< _1, tuple_field<_2> >
>::type tuple;
int main()
{
tuple t;
field<int>(t) = -1;
field<char const*>(t) = "text";
field<bool>(t) = false;
std::cout
<< field<int>(t) << 'n'
<< field<char const*>(t) << 'n'
<< field<bool>(t) << 'n'
;
}
Статья The MPL Reference Manual: inherit_linearly раздела может быть полезна для разработчиков на c++ и boost.
:: Главная :: ::
реклама |