最終更新日時: 2025年05月29日 12時43分56秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<ranges>

# std::ranges::filter_view::iterator::iter_move(C++20)

    friend constexpr range_rvalue_reference_t<V>
      iter_move(const iterator& i)
        noexcept(noexcept(ranges::iter_move(i.current_))); // (1) C++20

## 概要

イテレータの要素を移動する。

## 効果

以下と等価：

    return ranges::iter_move(i.current_);

## 例

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

    int main() {
      std::vector<std::string> v = {"apple", "banana", "cherry", "date"};
      auto is_long = [](const std::string& s) { return s.size() > 5; };

      std::ranges::filter_view fv{v, is_long};
      auto it = fv.begin();

      // iter_moveで要素をムーブ
      std::string s = iter_move(it);
      std::cout << s << std::endl; // banana

      // ムーブ後の元要素は空になる
      std::cout << std::boolalpha << v[1].empty() << std::endl; // true
    }

### 出力

    banana
    true

## バージョン

### 言語

- C++20

### 処理系

- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅