А.<range>представляет собой полуоткрытый интервал формы<[from, to)>, содержащей<hana::integral_constant>с данного типа.<[from, to)>обозначение представляет значения, начинающиеся с<from>(включительно) до, но исключая<from>. Это немного похоже на список<from, from+1, ..., to-1>.
В частности, обратите внимание, что границы диапазона могут быть любыми<hana::integral_constant>с (допускаются отрицательные числа) и диапазон не должен начинаться с нуля. Единственное условие – это<from <= to>.
Note
The representation of hana::range is implementation defined. In particular, one should not take for granted the number and types of template parameters. The proper way to create a hana::range is to use hana::range_c or hana::make_range.
Modeled concepts
Comparable Два диапазона равны, если и только если они оба пустые или они оба охватывают один и тот же интервал.
// Авторское право Louis Dionne 2013-2016
// Распространяется под лицензией Boost Software License, версия 1.0.
// (См. сопроводительный файл LICENSE.md или копию на http://boost.org/LICENSE_1_0.txt)
Foldable Складкаrangeэквивалентна складыванию спискаintegral_constantс интервалом, который он охватывает.
// Авторское право Louis Dionne 2013-2016
// Распространяется по лицензии Boost Software License, версия 1.0.
// [См. сопроводительный файл LICENSE.md или копию по адресу http://boost.org/LICENSE_1_0.txt]
[ Хана::int_c&[ORIG_END] -->
Iterable Итерация надrangeэквивалентна итерации над списком значений, которые она охватывает. Иными словами, повторение по диапазону[from, to)эквивалентно повторению по списку, содержащемуfrom, from+1, from+2, ..., to-1. Также обратите внимание, чтоoperator[]может использоваться вместоatфункции.
// Авторское право Louis Dionne 2013-2016
// Распространяется по лицензии Boost Software License, версия 1.0.
// [См. сопроводительный файл LICENSE.md или копию по адресу http://boost.org/LICENSE_1_0.txt]
При наличии двух<IntegralConstant>с<from>и<to>,<make<range_tag>>возвращает<hana::range>, представляющий полуоткрытый интервал<integral_constant>с<[from, to)>.<from>и<to>должны образовывать действительный интервал, что означает, что<from <= to>должен быть истинным. В противном случае возникает ошибка компиляции. Также обратите внимание, что если<from>и<to>являются<IntegralConstant>s с различными базовыми интегральными типами, то созданный диапазон содержит<integral_constant>s, основной тип которых является их общим типом.
Example
// 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)
Статья Boost.Hana: boost::hana::range< T, from, to > Struct Template Reference раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.