std::ranges::safe_iterator_t,std::ranges::safe_subrange_t (3) - Linux Man Pages

std::ranges::safe_iterator_t,std::ranges::safe_subrange_t: std::ranges::safe_iterator_t,std::ranges::safe_subrange_t


std::ranges::safe_iterator_t,std::ranges::safe_subrange_t - std::ranges::safe_iterator_t,std::ranges::safe_subrange_t


Defined in header <ranges>
template<Range R>
using safe_iterator_t = std::conditional_t<__ForwardingRange<R>, (1) (since C++20)
ranges::iterator_t<R>, ranges::dangling>;
template<Range R>
using safe_subrange_t = std::conditional_t<__ForwardingRange<R>, (2) (since C++20)
ranges::subrange<ranges::iterator_t<R>>, ranges::dangling>;

1) Same as ranges::iterator_t when R models exposition-only concept __ForwardingRange, otherwise yields ranges::dangling instead.
2) Similar to (1), but it yields a specialization of ranges::subrange when the the same condition is met.
These two alias templates are used by some constrained_algorithms to avoid returning potentially dangling iterators or views.

See also

         a placeholder type indicating that an iterator or a subrange should not be returned since it would be dangling
dangling (class)