Namespaces
Variants

std::ranges:: borrowed_iterator_t, std::ranges:: borrowed_subrange_t

From cppreference.net
Ranges library
Range adaptors
Definido en el encabezado <ranges>
template < ranges:: range R >
using borrowed_iterator_t = /* ver más abajo */ ;
(1) (desde C++20)
template < ranges:: range R >
using borrowed_subrange_t = /* ver más abajo */ ;
(2) (desde C++20)
1) std :: ranges:: iterator_t < R > si R modela borrowed_range , std::ranges::dangling en caso contrario.
2) std :: ranges:: subrange < std :: ranges:: iterator_t < R >> si R modela borrowed_range , std::ranges::dangling en caso contrario.

Estas dos plantillas de alias son utilizadas por algunos algoritmos restringidos para evitar devolver iteradores o vistas que potencialmente queden colgados.

Implementación posible

borrowed_iterator_t
template< std::ranges::range R >
using borrowed_iterator_t = std::conditional_t<std::ranges::borrowed_range<R>,
    std::ranges::iterator_t<R>, std::ranges::dangling>;
borrowed_subrange_t
template< std::ranges::range R >
using borrowed_subrange_t = std::conditional_t<std::ranges::borrowed_range<R>,
    std::ranges::subrange<std::ranges::iterator_t<R>>, std::ranges::dangling>;

Véase también

un tipo marcador de posición que indica que un iterador o un subrange no debería ser devuelto ya que quedaría colgando
(clase)