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

履歴 編集

function
<ranges>

std::ranges::filter_view::iterator::base(C++20)

constexpr const iterator_t<V> base() const & noexcept;  // (1)
constexpr iterator_t<V> base() &&;                      // (2)

概要

元のviewのイテレータを取得する。

効果

入力viewV)のイテレータをcurrent_というメンバに保持するとして

  • (1) : return current_; と等しい
  • (2) : return std::move(current_); と等しい

#include <ranges>
#include <vector>
#include <iostream>

int main() {
  using std::ranges::view;

  std::vector<int> vec = {1, 2, 3, 4, 5};

  std::ranges::filter_view fv{vec, [](int i) { return i % 2 == 0; }};
  auto itr = fv.begin();

  // (1) コピーして取得
  auto b1 = itr.base();

  // (2) ムーブして取得
  auto b2 = std::move(itr).base();

  static_assert(std::same_as<decltype(b1), std::vector<int>::iterator>);
  static_assert(std::same_as<decltype(b2), std::vector<int>::iterator>);
}

出力

バージョン

言語

  • C++20

処理系

参照