nothrow-input-range, nothrow-forward-range, nothrow-bidirectional-range, no-throw-input-range, nothrow-random-access-range, nothrow-sized-random-access-range

来自cppreference.com


 
 
算法库


受约束算法及范围上的算法 (C++20)
包含算法例如 ranges::copyranges::sort、...
排序和相关操作
划分操作
(C++11)    

排序操作
二分搜索操作(在已划分范围上)
集合操作(在有序范围上)
归并操作(在有序范围上)
堆操作
最小/最大操作
(C++11)
(C++17)
字典序比较操作
排列操作




 
 
template< class R >
concept /*nothrow-input-range*/ =
    ranges::range<R> &&
    /*nothrow-input-iterator*/<ranges::iterator_t<R>> &&
    /*nothrow-sentinel-for*/<ranges::sentinel_t<R>, ranges::iterator_t<R>>;
(1) (仅用于阐述*)
template< class R >
concept /*nothrow-forward-range*/ =
    /*nothrow-input-range*/<R> &&
    /*nothrow-forward-iterator*/<ranges::iterator_t<R>>;
(2) (仅用于阐述*)
template< class R >
concept /*nothrow-bidirectional-range*/ =
    /*nothrow-forward-range*/<R> &&
    /*nothrow-bidirectional-iterator*/<ranges::iterator_t<R>>;
(3) (C++26 起)
(仅用于阐述*)
template< class R >
concept /*nothrow-random-access-range*/ =
    /*nothrow-bidirectional-range*/<R> &&
    /*nothrow-random-access-iterator*/<ranges::iterator_t<R>>;
(4) (C++26 起)
(仅用于阐述*)
template< class R >
concept /*nothrow-sized-random-access-range*/ =
    /*nothrow-random-access-range*/<R> && ranges::sized_range<R>;
(5) (C++26 起)
(仅用于阐述*)

这些仅用于阐述的概念指定 <memory> 专门算法所要求的范围上的操作均不抛异常。

/*nothrow-input-iterator*//*nothrow-forward-iterator*//*nothrow-bidirectional-iterator*//*nothrow-random-access-iterator*/ 的定义见此页

语义要求

1) 只有在 R 类型的对象上调用 ranges::beginranges::end 都不会抛出异常时,类型 R 才会实现 nothrow-input-range
5) 只有在 R 类型的对象上调用 ranges::size 不会抛出异常时,类型 R 才会实现 nothrow-sized-random-access-range

注解

这些概念允许部分范围操作抛出异常。

参阅

指定类型为范围,即它同时提供 begin 迭代器和 end 哨位
(概念) [编辑]
指定范围可以常数时间计算大小
(概念) [编辑]
获取范围的迭代器和哨位类型
(别名模板) [编辑]