ranges::borrowed_subrange_t = detail::maybe_dangling_< R, subrange< iterator_t< R > >>
template<typename R >
using
ranges::safe_subrange_t = borrowed_subrange_t< R >
template<typename R >
using
ranges::cpp20::safe_subrange_t = borrowed_subrange_t< R >
Enumerations
enum class
subrange_kind : bool { unsized
, sized
}
Functions
template<typename I , typename S = I, subrange_kind K = static_cast<subrange_kind>( detail::is_sized_sentinel_<S, I>())>
ranges::cpp20::CPP_TEMPLATE_AUX_0 (requires input_or_output_iterator< I > &&sentinel_for< S, I > &&(K==subrange_kind::sized||!sized_sentinel_for< S, I >)) using subrange
Variables
template<typename I , typename S , subrange_kind K>
constexpr bool
ranges::enable_borrowed_range< subrange< I, S, K > > = true