- iterator[meta header]
- std[meta namespace]
- common_iterator[meta class]
- function[meta id-type]
- cpp20[meta cpp]
decltype(auto) operator*();
decltype(auto) operator*() const requires dereferenceable<const I>;
- dereferenceable[link /reference/iterator/dereferenceable.md]
イテレータを間接参照する。
holds_alternative
<I>(v_) == true
I, S
の値のどちらかをvariant<I, S>
型のメンバ変数v_
に保持しているとして、以下と等価。
return *get<I>(v_);
#include <iostream>
#include <iterator>
#include <ranges>
int main() {
auto seq = std::views::iota(1) | std::views::take(5);
// common_iteratorを通すことでイテレータ型と番兵型を合わせる
using CI = std::common_iterator<std::ranges::iterator_t<decltype(seq)>, std::ranges::sentinel_t<decltype(seq)>>;
CI ci{std::ranges::begin(seq)};
std::cout << *ci << std::endl;
++ci;
std::cout << *ci << std::endl;
}
- *ci[color ff0000]
- views::iota[link /reference/ranges/iota_view.md]
- views::take[link /reference/ranges/take_view.md]
- iterator_t[link /reference/ranges/iterator_t.md]
- sentinel_t[link /reference/ranges/sentinel_t.md]
- ranges::begin[link /reference/ranges/begin.md]
1
2
- C++20
- Clang: ??
- GCC: 10.1 [mark verified]
- Visual C++: 2019 Update 9 [mark verified]