deduction guides for
std::ranges::subrange
|
定義ヘッダー
<ranges>
|
||
|
template
<
std::
input_or_output_iterator
I,
std::
sentinel_for
<
I
>
S
>
subrange ( I, S ) - > subrange < I, S > ; |
(1) | (C++20以降) |
|
template
<
std::
input_or_output_iterator
I,
std::
sentinel_for
<
I
>
S
>
subrange
(
I, S,
/*make-unsigned-like-t*/
<
std::
iter_difference_t
<
I
>>
)
-
>
|
(2) | (C++20以降) |
|
template
<
ranges::
borrowed_range
<
R
>
>
subrange
(
R
&&
)
-
>
|
(3) | (C++20以降) |
|
template
<
ranges::
borrowed_range
<
R
>
>
subrange
(
R
&&
,
/*make-unsigned-like-t*/
<
ranges::
range_difference_t
<
R
>>
)
-
>
|
(4) | (C++20以降) |
これらの デダクションガイド は std::ranges::subrange に対して提供されます。
subrange
は
std::
sized_sentinel_for
<
S, I
>
が満たされる場合、デフォルトテンプレート引数によって決定されるように、サイズ指定可能となります。
subrange
は常にサイズ指定されます。
subrange
は、範囲またはそのイテレータと番兵からサイズを取得できる場合、サイズ指定されます。
subrange
は常にサイズ指定されています。
/* make-unsigned-like-t */
の定義については、
make-unsigned-like-t
を参照してください。
注記
subrange
オブジェクトの構築中、
- for (1,2) 、イテレータ-番兵のペアが有効な範囲を示さない場合、動作は未定義です。
- for (2,4) 、指定されたサイズが範囲のサイズと等しくない場合、動作は未定義です。
例
|
このセクションは不完全です
理由: 例がありません |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3404 | C++20 | pairライクな型からの無意味なデダクションガイドが提供されていた | 削除 |