Namespaces
Variants

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

来自 zh.cppreference.net
 
 
范围库
范围适配器
 
定义于头文件 <ranges>
template< ranges::range R >
using borrowed_iterator_t = /* see below */;
(1) (C++20 起)
template< ranges::range R >
using borrowed_subrange_t = /* see below */;
(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 不应被返回的占位符类型,因为返回会导致悬空引用
(类)