std::ranges::viewable_range 来自cppreference.com < cpp | ranges C++ 语言 标准库头文件 自立与有宿主实现 具名要求 语言支持库 概念库 (C++20) 诊断库 工具库 字符串库 容器库 迭代器库 范围库 (C++20) 算法库 数值库 本地化库 输入/输出库 文件系统库 (C++17) 正则表达式库 (C++11) 原子操作库 (C++11) 线程支持库 (C++11) 技术规范 范围库 范围访问 begin cbegin end cend rbegin crbegin rend crend size ssize data cdata empty 范围原语 iterator_tsentinel_t range_size_trange_difference_t range_value_t range_reference_trange_rvalue_reference_t 悬垂迭代器处理 dangling borrowed_iterator_t borrowed_subrange_t 范围概念 range borrowed_range sized_range common_range view viewable_range input_range output_range forward_range bidirectional_range random_access_range contiguous_range 视图 view_interface subrange 半正则包装 工厂 empty_viewviews::empty single_viewviews::single iota_viewviews::iota views::counted 适配器 views::all_tviews::all join_viewviews::join take_viewviews::take basic_istream_viewistream_view ref_view split_viewviews::split take_while_viewviews::take_while elements_viewviews::elements common_viewviews::common transform_viewviews::transform drop_viewviews::drop keys_viewviews::keys reverse_viewviews::reverse filter_viewviews::filter drop_while_viewviews::drop_while values_viewviews::values 定义于头文件 <ranges> template<class T> concept viewable_range = ranges::range<T> && (ranges::borrowed_range<T> || ranges::view<std::remove_cvref_t<T>>); viewable_range 概念是 range 的细化,它描述能安全转换成 view 的范围。