- 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
- GCC: 10.1.0
- ICC: ??
- Visual C++: 2019 Update 10
- C++17 範囲 for ループの制限緩和
範囲for文は、C++17の時点で先行してcommon_rangeではない範囲を扱えるようになっている views::common
任意の範囲をcommon_rangeに変換するRangeアダプタオブジェクト