std::ranges::borrowed_range, std::ranges::enable_borrowed_range_C++中文网

位置:首页 > C++ 参考手册 >范围库 (C++20) > std::ranges::borrowed_range, std::ranges::enable_borrowed_range

定义于头文件 <ranges>

template<class R>

concept borrowed_range =
    ranges::range<R> &&

    (std::is_lvalue_reference_v<R> || ranges::enable_borrowed_range<std::remove_cvref_t<R>>);

(1)

定义于头文件 <ranges>

定义于头文件 <span>

定义于头文件 <string_view>

template<class R>
inline constexpr bool enable_borrowed_range = false;

(2)

1) 概念 borrowed_range 定义范围的要求,使得函数能按值接收它,并返回从它获得的迭代器,而无悬垂之虞。

语义要求

给定满足 decltype((e))T 的表达式 eT 实现 borrowed_range 仅若从 e 所代表的对象获得的迭代器的合法性不捆绑到该对象的生存期。

注解

用户可对要实现 borrowed_range 的无 cv 限定的程序定义类型特化 enable_borrowed_rangetrue ,而对不实现的类型特化为 false 。这些特化应当可用于常量表达式并拥有 const bool 类型。