Namespaces
Variants

deduction guides for std::ranges::iota_view

From cppreference.net
Ranges library
Range adaptors
ヘッダーで定義 <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以降)

この deduction guide は、 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);
}