- ranges[meta header]
- concept[meta id-type]
- std::ranges[meta namespace]
- cpp20[meta cpp]
namespace std::ranges {
template<class T>
concept common_range = range<T> && same_as<iterator_t<T>, sentinel_t<T>>;
}
- range[link range.md]
- iterator_t[link iterator_t.md]
- sentinel_t[link sentinel_t.md]
common_range
は、イテレータと番兵の型が等しいRangeを表すコンセプトである。
標準のコンテナはすべてcommon_range
のモデルである。
型T
がcommon_range
のモデルとなるのは、T
がrange
のモデルであり、T
から取得した番兵とイテレータの型が等しい場合である。
(執筆中)
(執筆中)
- C++20
- Clang: 13.0.0 [mark verified]
- GCC: 10.1.0 [mark verified]
- ICC: ??
- Visual C++: 2019 Update 10 [mark verified]
- C++17 範囲 for ループの制限緩和
範囲for文は、C++17の時点で先行してcommon_range
ではない範囲を扱えるようになっている views::common
任意の範囲をcommon_range
に変換するRangeアダプタオブジェクト