std::ranges::subrange<I,S,K>::subrange
Источник: ru.cppreference.net
subrange() requires std::default_initializable<I> = default;
|
(1) | (начиная с C++20) |
constexpr subrange( /*convertible-to-non-slicing*/<I> auto i, S s )
requires (!/*StoreSize*/);
|
(2) | (начиная с C++20) |
constexpr subrange( /*convertible-to-non-slicing*/<I> auto i, S s,
/*make-unsigned-like-t*/<std::iter_difference_t<I>> n )
requires (K == ranges::subrange_kind::sized);
|
(3) | (начиная с C++20) |
template< /*different-from*/<subrange> R >
requires ranges::borrowed_range<R> &&
/*convertible-to-non-slicing*/<ranges::iterator_t<R>, I> &&
std::convertible_to<ranges::sentinel_t<R>, S>
constexpr subrange( R&& r )
requires (!/*StoreSize*/ || ranges::sized_range<R>);
|
(4) | (начиная с C++20) |
template< ranges::borrowed_range R>
requires /*convertible-to-non-slicing*/<ranges::iterator_t<R>, I> &&
std::convertible_to<ranges::sentinel_t<R>, S>
constexpr subrange( R&& r,
/*make-unsigned-like-t*/<std::iter_difference_t<I>> n )
requires (K == ranges::subrange_kind::sized)
: subrange{ranges::begin(r), ranges::end(r), n} {}
|
(5) | (начиная с C++20) |
Создаёт subrange.
Определения /*make-unsigned-like-t*/ и /*different-from*/ см. в make-unsigned-like-t и different-from соответственно.
| Перегрузка | Элементы данных | ||
|---|---|---|---|
begin_
|
end_
|
size_(только если StoreSize равно true)
| |
| (1) | инициализирован значением | инициализирован значением | инициализирован с помощью 0
|
| (2) | инициализирован с помощью std::move(i)
|
инициализирован с помощью s
|
нет |
| (3) | инициализирован с помощью n
| ||
| (4) | инициализирован с помощью std::move(ranges::begin(r))
|
инициализирован с помощью ranges::end(r)
|
инициализирован с помощью static_cast<decltype(size_ )> (ranges::size(r))
|
| (5) | инициализирован с помощью n
| ||
3) Если выполняется любое из следующих условий, поведение не определено:
[i,s)не является допустимым диапазоном.n ==to-unsigned-like(ranges::distance(i, s))равноfalse.
Параметры
| i | - | итератор, обозначающий начало диапазона |
| s | - | страж, обозначающий конец диапазона |
| r | - | диапазон |
| n | - | подсказка размера, должна быть равна размеру диапазона |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| P2393R1 | C++20 |
для перегрузки
(
4
)
,
size_
может инициализироваться с помощью
ranges::
size
(
r
)
, но оно
не всегда неявно преобразуется в соответствующий unsigned-integer-like тип |
преобразование сделано
явным |