std::incrementable_traits - cppreference.com
提供: cppreference.com
<tbody> </tbody>
| ヘッダ |
||
|
|
(1) | (C++20以上) |
|
|
(2) | (C++20以上) |
|
|
(3) | (C++20以上) |
|
|
(4) | (C++20以上) |
|
|
(5) | (C++20以上) |
型 I の関連する差型を計算します。 ユーザはプログラム定義の型に対して incrementable_traits を特殊化しても構いません。
1) プライマリテンプレートは空の構造体です。
2) ポインタに対する特殊化。 std::ptrdiff_t に等しいメンバ型 difference_type を提供します。
3) const 修飾された型に対する特殊化。
4) パブリックかつアクセス可能なメンバ型 difference_type を定義している型に対する特殊化。 T::difference_type に等しいメンバ型 difference_type を提供します。
5) パブリックかつアクセス可能なメンバ型 difference_type を定義していないけれども減算をサポートしている型に対する特殊化。 std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> に等しいメンバ型 difference_type を提供します。 暗黙の式のバリエーションのルール (後述) が式 a - b に適用されます。
暗黙の式のバリエーション
何らかの定数左辺値の被演算子に対して変更しない式を使用する requires 式は、そのような式のバリエーションが異なるセマンティクスで明示的に要求されなければ、与えられた被演算子に対して非定数左辺値または (定数かもしれない) 右辺値を受理するその式の追加のバリエーションも暗黙に要求します。 これらの暗黙の式のバリエーションは、宣言された式のセマンティクスの要件を満たさなければなりません。 処理系がバリエーションの構文を検証する範囲は未規定です。