|
template<typename I , typename S > |
| ranges::subrange (I, S) -> subrange< I, S > |
|
template<typename I , typename S > |
requires input_or_output_iterator< I > &&sentinel_for< S, I > | ranges::subrange (I, S, detail::iter_size_t< I >) -> subrange< I, S, subrange_kind::sized > |
|
template<typename R > |
requires borrowed_range< R > | ranges::subrange (R &&) -> subrange< iterator_t< R >, sentinel_t< R >,(sized_range< R >||sized_sentinel_for< sentinel_t< R >, iterator_t< R >>) ? subrange_kind::sized :subrange_kind::unsized > |
|
template<typename R > |
requires borrowed_range< R > | ranges::subrange (R &&, detail::iter_size_t< iterator_t< R >>) -> subrange< iterator_t< R >, sentinel_t< R >, subrange_kind::sized > |
|
|
template<typename I , typename S , subrange_kind K> |
constexpr bool | ranges::enable_borrowed_range< subrange< I, S, K > > = true |
|
template<typename I , typename S = I, subrange_kind K = static_cast<subrange_kind>( detail::is_sized_sentinel_<S, I>())> |
requires input_or_output_iterator< I > &&sentinel_for< S, I > && | ranges::cpp20::K |
|
requires input_or_output_iterator< I > &&sentinel_for< S, I > | ranges::cpp20::S |
|