命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | ranges
 
 
范围库
范围适配器
 
定义于头文件 <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,否则。

这两个别名模板被一些约束算法使用,以避免返回可能悬垂的迭代器或视图。

[edit] 可能的实现

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

[edit] 参见

一个占位符类型,指示不应返回迭代器或 subrange,因为它会是悬垂的
(类) [编辑]