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

Boost.Hana: boost::mpl::vector< 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)
    #include<boost/mpl/vector.hpp>
    пространство именhana =boost::hana;
    namespacempl =boost::mpl;
    hana::equal(mpl::vector2{}, mpl::vector{})
    ;
    hana::not_equal(mpl::vector2{}, mpl::vector{})
    ;
    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]
    [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::vector{},hana::equal.to(hana:type_c) [390::type_c] ==
    hana::just(hana::type_c)
    hana::find(mpl::vector{}, hana::type_c)
    ==
    hana::ничего
    ;
    intmain() { }
    [ORIG_END] -->

Conversion from any Foldable

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

to<ext::boost::mpl::vector_tag>(xs) == mpl::vector<t1, ..., tn>

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

Warning
The limitations on the size of mpl::vectors are inherited by this conversion utility, and hence trying to convert a Foldable containing more than BOOST_MPL_LIMIT_VECTOR_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::vector_tag>(xs)),
mpl::vector<int, char, double>
>{}, "");
int main() { }

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 05:52:43/0.0082869529724121/1