最終更新日時: 2025年05月30日 14時32分30秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<ranges>

# std::ranges::as_rvalue_view::コンストラクタ(C++23)

    as_rvalue_view()
      requires default_initializable<V> = default; // (1) C++23

    constexpr explicit
      as_rvalue_view(V base);                      // (2) C++23

## 概要

`as_rvalue_view`オブジェクトを構築する。

- (1) : `base`をムーブして`*this`に保持する

## 効果

- (1) : メンバ変数`base_`を`std::move(base)`で初期化する

## 備考

- ここで、`V`は`std::ranges::ref_view`であり、元となるRangeは`view`に変換されて保持される。

## 例

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

    int main() {
      std::vector<int> v = {1, 2, 3};
      std::ranges::for_each(
        std::views::as_rvalue(v),
        [](int x) { std::cout << x << ' '; }
      );
    }

### 出力

    1 2 3

## バージョン

### 言語

- C++23

### 処理系

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