• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <ranges>

    std::ranges::filter_view::iterator::base

    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

    処理系

    参照