Skip to content

Latest commit

 

History

History
47 lines (36 loc) · 1.77 KB

iota_diff_t.md

File metadata and controls

47 lines (36 loc) · 1.77 KB

iota_diff_t

  • ranges[meta header]
  • std::ranges[meta namespace]
  • class template[meta id-type]
  • cpp20[meta cpp]

概要

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>>;
  • conditional_t[link /reference/type_traits/conditional.md]
  • is_integral_v[link /reference/type_traits/is_integral.md]
  • iter_difference_t[link /reference/iterator/iter_difference_t.md]

バージョン

言語

  • C++20

処理系

  • Clang: 13.0.0 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ?
  • Visual C++: 2019 Update 10 [mark verified]

参照