命名空间
变体
操作

std::ranges::iota_view 的推导指南

来自 cppreference.com
< cpp‎ | ranges‎ | iota view
 
 
范围库
范围适配器
 
 
定义在头文件 <ranges>
template< class W, class Bound >

    requires (!/*is-integer-like*/<W> ||
              !/*is-integer-like*/<Bound> ||
              /*is-signed-integer-like*/<W> == /*is-signed-integer-like*/<Bound>)

iota_view( W, Bound ) -> iota_view<W, Bound>;
(自 C++20 起)

推导指南 是为 iota_view 提供的,以允许从初始值和边界值推导。

有关 /*is-integer-like*//*is-signed-integer-like*/ 的定义,请参阅 is-integer-like .

请注意,该指南会保护自身免受因符号不匹配而产生的错误,例如 views::iota(0, v.size()),其中 0 为有符号数,而 v.size() 为无符号数。

[编辑] 示例

#include <cassert>
#include <ranges>
 
int main()
{
    auto io = std::ranges::iota_view(1L, 7L); // deduces W and Bound as “long”
    assert(io.front() == 1L and io.back() == 6L);
}