最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

class template
<ranges>

# std::ranges::iota_diff_t(C++20)

## 概要

`iota_view`のイテレータの差の型。

このクラスの名前は規定されていない。

このクラスの型を取得したい場合、`range_difference_t`を使用できる。

## 定義

`iota_diff_t(W)` は次のように定義される。

1. `W`が整数型ではないか、`sizeof(iter_difference_t<W>) > sizeof(W)`ならば、`iter_difference_t<W>`
2. それ以外の場合、そのような型が存在すれば、符号付き整数型であってその幅が`W`の幅より大きい型
3. それ以外の場合、未規定の符号付き整数のような型で、幅が`W`の幅以上の型

## 実装例(MSVC)

    template <class _Ty>
    using _Iota_diff_t = conditional_t<is_integral_v<_Ty>,
      conditional_t<sizeof(_Ty) < sizeof(int), int,
        conditional_t<sizeof(_Ty) < sizeof(long long), long long, _Signed128>>,
      iter_difference_t<_Ty>>;

## バージョン

### 言語

- C++20

### 処理系

- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅

## 参照

- N4861 24 Ranges library
- C++20 ranges