命名空间
变体
操作

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

来自 cppreference.com
< cpp‎ | ranges
 
 
范围库
范围转换
(C++23)(C++23)    
(C++23)

悬垂迭代器处理
borrowed_iterator_t
borrowed_subrange_t

范围适配器
 
定义在头文件 <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,因为它们将是悬垂的
(类) [编辑]