概要
ref_view
オブジェクトを構築する。
- (1) :
t
へのポインタを*this
に保持する
効果
- (1) : メンバ変数
r_
をaddressof(static_cast<R&>(std::forward<T>(t)))
で初期化する
備考
-
(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 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅