deductionguidesforstd::ranges::subrange(3) | C++ Standard Libary | deductionguidesforstd::ranges::subrange(3) |
NAME¶
deductionguidesforstd::ranges::subrange - deductionguidesforstd::ranges::subrange
Synopsis¶
Defined in header <ranges>
template< std::input_or_output_iterator I, std::sentinel_for<I> S
> (1) (since
subrange(I, S) -> subrange<I, S>; C++20)
template< std::input_or_output_iterator I, std::sentinel_for<I> S
>
(since
subrange(I, S,
/*make-unsigned-like-t*/<std::iter_difference_t<I>>) ->
(2) C++20)
subrange<I, S, ranges::subrange_kind::sized>;
template< ranges::borrowed_range<R> >
subrange(R&&) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
(ranges::sized_range<R> || (3) (since
std::sized_sentinel_for<ranges::sentinel_t<R>, C++20)
ranges::iterator_t<R>>) ?
ranges::subrange_kind::sized :
ranges::subrange_kind::unsized>;
template< ranges::borrowed_range<R> >
subrange(R&&,
/*make-unsigned-like-t*/<ranges::range_difference_t<R>>) (since
-> (4) C++20)
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
ranges::subrange_kind::sized>;
These deduction guides are provided for std::ranges::subrange.
1) Deduces the template arguments from the type of iterator and sentinel. The
subrange is sized if std::sized_sentinel_for<S, I> is satisfied, as
determined by
the default template argument.
2) Deduces the template arguments from the type of iterator and sentinel,
while the
size of range is specified. The subrange is always sized.
3) Deduces the template arguments from the type of range. The subrange is
sized if
the size can be obtained from the range or its iterator and sentinel.
4) Deduces the template arguments from the type of range, while the size of
range is
specified. The subrange is always sized.
The exposition-only alias template make-unsigned-like-t maps each
integer-like type
to its corresponding unsigned version.
Notes¶
While constructing the subrange object,
* for (1,2), the behavior is undefined if the iterator-sentinel pair does not
denote a valid range,
* for (2,4), the behavior is undefined if the given size is not equal to the
size
of the range.
Example¶
This section is incomplete
Reason: no example
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 3404 C++20 meaningless deduction guides from pair-like removed
types were provided
Category:¶
* Todo no example
2024.06.10 | http://cppreference.com |