Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
定义于头文件 <ranges>
template < ranges:: range R >
using borrowed_iterator_t = /* 见下文 */ ;
(1) (C++20 起)
template < ranges:: range R >
using borrowed_subrange_t = /* 见下文 */ ;
(2) (C++20 起)
1) std :: ranges:: iterator_t < R > R 满足 borrowed_range 概念,否则为 std::ranges::dangling
2) std :: ranges:: subrange < std :: ranges:: iterator_t < R >> R 满足 borrowed_range 概念,否则为 std::ranges::dangling

这两个别名模板被某些 约束算法 用于避免返回可能悬空的迭代器或视图。

可能实现

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>;

参见

用于指示迭代器或 subrange 不应被返回的占位符类型,因为返回会导致悬空引用
(类)