![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |