最終更新日時(UTC):
が更新

履歴 編集

function
<iterator>

std::common_iterator::operator*(C++20)

decltype(auto) operator*();
decltype(auto) operator*() const requires dereferenceable<const I>;

概要

イテレータを間接参照する。

事前条件

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;
}

出力

1
2

バージョン

言語

  • C++20

処理系

参照