Skip to content

Latest commit

 

History

History
68 lines (52 loc) · 1.47 KB

File metadata and controls

68 lines (52 loc) · 1.47 KB

コンストラクタ

  • ranges[meta header]
  • std::ranges[meta namespace]
  • ref_view[meta class]
  • function[meta id-type]
  • cpp20[meta cpp]
template <different-from<ref_view> T>
  requires 以下参照
constexpr
  ref_view(T&& t);          // (1) C++20

概要

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

  • (1) : tへのポインタを*thisに保持する

効果

備考

  • (1) : 説明専用の関数FUNを以下のように定義する:

    void FUN(R&);
    void FUN(R&&) = delete;
    • requires節は、以下と等価になる:
    convertible_to<T, R&> && requires { FUN(declval<T>()); }
    • これはつまり、このコンストラクタには一時オブジェクトは渡せないことを意味する

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

int main() {
  std::vector<int> v = {1, 2, 3};
  for (int x : std::ranges::ref_view(v)) {
    std::cout << x << ' ';
  }
}

出力

1 2 3 

バージョン

言語

  • C++20

処理系

  • Clang: 13.0.0 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ?
  • Visual C++: 2019 Update 10 [mark verified]