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); // W 和 Bound 推导为 long
    assert(io.front() == 1L and io.back() == 6L);
}