Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost.Hana: boost::mpl::list< T > Struct Template Reference

Boost , ,

Boost.Hana  1.0.1
Your standard library for metaprogramming
Адаптер для повышения. Списки MPL.

Modeled concepts

Списки MPL могут моделировать несколько концепций. Однако, поскольку они способны удерживать только типы, им не хватает общности, необходимой для моделирования таких понятий, как Functor, Sequence и других связанных понятий.

  1. Comparable
    Два списка MPL равны, если и только если они содержат одинаковое количество типов, и если все эти типы равны.
    // Авторское право Louis Dionne 2013-2016
    // Распространяется под лицензией Boost Software License, версия 1.0.
    // (См. сопроводительный файл LICENSE.md или копию на http://boost.org/LICENSE_1_0.txt)
    пространство именhana =boost::hana;
    namespacempl =boost::mpl;
    hana::equal(mpl::list2{}, mpl::list{})
    ;
    hana::not_equal(mpl::list2{}, mpl::list{})
    ;
    intmain()
    [ORIG_END] -->
  2. Foldable
    Складка списка MPL эквивалентна складыванию его какSequence.
    // Авторское право Louis Dionne 2013-2016
    // Распространяется по лицензии Boost Software License, версия 1.0.
    // [См. сопроводительный файл LICENSE.md или копию по http://boost.org/LICENSE_180]
    [включает][включает][включает][включает][включает][включает]
    ]
    [[ORIG_END] -->
  3. Iterable
    Итерация по списку MPL просто повторяется по каждому из типов, которые он содержит, как если бы это былSequence.
    // Авторское право Louis Dionne 2013-2016
    // Распространяется по лицензии Boost Software License, Version 1.0.
    // [См. сопроводительный файл LICENSE.md или копию по http://boost.org/LICENSE_1_0.txt]
    [hana/hana/drop_front.hpp]
    [2[ORIG_END] -->
  4. Searchable
    Список MPL можно искать так, как если бы это был кортеж, содержащийhana::typeс.
    // Авторское право Louis Dionne 2013-2016
    // Распространяется по лицензии Boost Software License, Version 1.0.
    // [См. сопроводительный файл LICENSE.md или копию по адресу http://boost.org/LICENSE_1_0.txt]
    >
    >
    BOOST_HANA_CONSTANT_CHECK
    hana::find_if(mpl::list&int, float, char const*>{},hana::equal.to(hana:type_c) [390::type_c] ==
    hana::just(hana::type_c)
    hana::find(mpl::list{}, hana::type_c)
    ==
    hana::ничего
    ;
    intmain() { }
    [ORIG_END] -->

Conversion from any Foldable

Список MPL может быть создан из любого Foldable. Точнее, для Foldable xs, линейность которого [x1,..., xn],

to<ext::boost::mpl::list_tag>(xs) == mpl::list<t1, ..., tn>{}

где tk является типом xk или типом, содержащимся в xk, если xk является hana::type.

Warning
The limitations on the size of mpl::lists are inherited by this conversion utility, and hence trying to convert a Foldable containing more than BOOST_MPL_LIMIT_LIST_SIZE elements is an error.
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
#include <type_traits>
namespace hana = boost::hana;
namespace mpl = boost::mpl;
auto xs = hana::make_tuple(hana::type_c<int>, hana::type_c<char>, hana::type_c<double>);
static_assert(std::is_same<
decltype(hana::to<hana::ext::boost::mpl::list_tag>(xs)),
mpl::list<int, char, double>
>{}, "");
int main() { }

Статья Boost.Hana: boost::mpl::list< T > Struct Template Reference раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:10:09/0.0058879852294922/1