概要
iota_view
が有限長かつcommon_range
ではない場合の番兵型。
iota_view
の終端要素型の値を1つ記憶していて、比較演算は内部の値同士の比較となる。
このクラスの名前は規定されておらず、振る舞いのみが規定されている。
このクラスの型を取得したい場合、sentinel_t
を使用できる。
なお、iota_view
の番兵型は、無限長のときはunreachable_sentinel_t
、有限長でcommon_range
のときはiterator
である。
実装例
namespace std::ranges {
template<weakly_incrementable W, semiregular Bound>
requires weakly-equality-comparable-with<W, Bound>
struct iota_view<W, Bound>::sentinel {
private:
Bound bound_ = Bound();
public:
sentinel() = default;
constexpr explicit sentinel(Bound bound): bound_{bound} {
}
friend constexpr bool operator==(const iterator& x, const sentinel& y) {
return x.value_ == y.bound_;
}
friend constexpr iter_difference_t<W> operator-(const iterator& x, const sentinel& y) requires sized_sentinel_for<Bound, W> {
return x.value_ - y.bound_;
}
friend constexpr iter_difference_t<W> operator-(const sentinel& x, const iterator& y) requires sized_sentinel_for<Bound, W> {
return -(y - x);
}
};
}
バージョン
言語
- C++20
処理系
- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅