命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | ranges
 
 
范围库 (Ranges library)
范围适配器 (Range adaptors)
 
定义于头文件 <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) 如果 R 满足 borrowed_range 模型,则为 std::ranges::iterator_t<R>,否则为 std::ranges::dangling
2) 如果 R 满足 borrowed_range 模型,则为 std::ranges::subrange<std::ranges::iterator_t<R>>,否则为 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 不应返回,因为它会悬空
(class) [编辑]