最終更新日時(UTC): 2025年07月08日 15時33分39秒
Akira Takahashi が更新

履歴 編集

function
<ranges>

# std::ranges::as_rvalue_view::begin(C++23)

    constexpr auto begin()
      requires (!simple-view <V>); // (1) C++23

    constexpr auto begin() const
      requires range<const V>;     // (2) C++23

## 概要

`view`の先頭要素を指すイテレータを取得する。

## 戻り値

メンバ変数`base_`として保持しているRangeへのポインタがあるとして、以下を返す：

    return std::move_iterator(ranges::begin(*base_));

## 例

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

    int main() {
      std::vector<std::string> v = {"one", "two", "three"};
      auto r = std::ranges::as_rvalue_view(v);
      auto it = r.begin();
      auto end = r.end();

      while (it != end) {
        std::string x = *it; // ここでムーブされる
        std::cout << x << std::endl;
        ++it;
      }
    }

### 出力

    one
    two
    three

## バージョン

### 言語

- C++23

### 処理系

- Clang: 17 ✅
- GCC: 13 ✅
- ICC: ?
- Visual C++: 2022 Update 4 ✅