std::ranges:: ref_view
|
定義ヘッダー
<ranges>
|
||
|
template
<
ranges::
range
R
>
requires
std::
is_object_v
<
R
>
|
(C++20以降) | |
ref_view
は、他の
view
の要素を参照する
range
の
view
です。これはその
range
への参照をラップします。
目次 |
データメンバ
| メンバー | 説明 |
R*
r_
|
基となる範囲へのポインタ
( 説明専用メンバーオブジェクト* ) |
メンバー関数
指定された範囲を参照する
ref_view
を構築する
(public member function) |
|
|
参照されている範囲への参照を返す
(public member function) |
|
|
参照されている範囲の先頭イテレータを返す
(public member function) |
|
|
参照されている範囲の番兵を返す
(public member function) |
|
|
参照されている範囲が空かどうかをチェックする
(public member function) |
|
参照されている
sized_range
のサイズを返す
(public member function) |
|
|
(C++26)
|
参照されている
approximately_sized_range
のおおよそのサイズを返す
(public member function) |
参照されている
contiguous_range
の先頭へのポインタを返す
(public member function) |
|
std::ranges::view_interface から継承 |
|
|
(C++23)
|
範囲の先頭を指す定数イテレータを返す
(
std::ranges::view_interface<D>
のpublic member function)
|
|
(C++23)
|
範囲の定数イテレータの番兵を返す
(
std::ranges::view_interface<D>
のpublic member function)
|
|
派生ビューが空でないかどうかを返す(
ranges::empty
が適用可能な場合のみ提供)
(
std::ranges::view_interface<D>
のpublic member function)
|
|
派生ビューの最初の要素を返す(
forward_range
を満たす場合に提供)
(
std::ranges::view_interface<D>
のpublic member function)
|
|
派生ビューの最後の要素を返す(
bidirectional_range
かつ
common_range
を満たす場合のみ提供)
(
std::ranges::view_interface<D>
のpublic member function)
|
|
派生ビューの
n
th
番目の要素を返す(
random_access_range
を満たす場合のみ提供)
(
std::ranges::view_interface<D>
のpublic member function)
|
|
std::ranges::ref_view:: ref_view
|
template
<
/*different-from*/
<
ref_view
>
T
>
requires
std::
convertible_to
<
T, R
&
>
&&
|
(C++20以降) | |
r_
を
std::
addressof
(
static_cast
<
R
&
>
(
std::
forward
<
T
>
(
t
)
)
)
で初期化します。
/*different-from*/
<
T, U
>
は、
std::
remove_cvref_t
<
T
>
と
std::
remove_cvref_t
<
U
>
が同じ型でない場合にのみ満たされ、
_FUN
のオーバーロードは
void
_FUN
(
R
&
)
;
void
_FUN
(
R
&&
)
=
delete
;
として宣言されます。
パラメータ
| t | - | 参照する範囲 |
std::ranges::ref_view:: begin
|
constexpr
ranges::
iterator_t
<
R
>
begin
(
)
const
;
|
(C++20以降) | |
ranges::
begin
(
*
r_
)
を返します。
std::ranges::ref_view:: end
|
constexpr
ranges::
sentinel_t
<
R
>
end
(
)
const
;
|
(C++20以降) | |
ranges::
end
(
*
r_
)
を返します。
std::ranges::ref_view:: empty
|
constexpr
bool
empty
(
)
const
requires requires { ranges:: empty ( * r_ ) ; } ; |
(C++20以降) | |
r_
*
に対して
ranges::
empty
(
を呼び出した結果を返します
)
。
std::ranges::ref_view:: size
|
constexpr
auto
size
(
)
const
requires ranges:: sized_range < R > ; |
(C++20以降) | |
r_
*
ranges::
size
(
の結果を返します
)
。
(注:元のテキストには翻訳対象となる可視テキストが含まれていないため、HTML構造のみを保持しています)
std::ranges::ref_view:: reserve_hint
|
constexpr
auto
size
(
)
const
requires ranges :: approximately_sized_range < R > ; |
(C++26以降) | |
r_
*
に対して
ranges
::
reserve_hint
(
を呼び出した結果を返します
)
。
std::ranges::ref_view:: data
|
constexpr
auto
data
(
)
const
requires ranges:: contiguous_range < R > ; |
(C++20以降) | |
ranges::
data
(
*
r_
)
を返します。
推論ガイド
|
template
<
class
R
>
ref_view ( R & ) - > ref_view < R > ; |
(C++20以降) | |
ヘルパーテンプレート
|
template
<
class
T
>
constexpr bool enable_borrowed_range < ranges :: ref_view < T >> = true ; |
(C++20以降) | |
この
std::ranges::enable_borrowed_range
の特殊化は、
ref_view
が
borrowed_range
を満たすようにします。
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_ranges_reserve_hint
|
202502L
|
(C++26) |
ranges::approximately_sized_range
および
reserve_hint
|
例
#include <iostream> #include <ranges> int main() { const std::string s{"cosmos"}; const std::ranges::take_view tv{s, 3}; const std::ranges::ref_view rv{tv}; std::cout << std::boolalpha << "call empty(): " << rv.empty() << '\n' << "call size() : " << rv.size() << '\n' << "call begin(): " << *rv.begin() << '\n' << "call end() : " << *(rv.end() - 1) << '\n' << "call data() : " << rv.data() << '\n' << "call base() : " << rv.base().size() << '\n' // ~> tv.size() << "range-for : "; for (const auto c : rv) std::cout << c; std::cout << '\n'; }
出力:
call empty(): false call size() : 3 call begin(): c call end() : s call data() : cosmos call base() : 3 range-for : cos
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P2325R3 | C++20 |
default constructor was provided as
view
must be
default_initializable
|
要件と共に削除 |
関連項目
|
(C++11)
|
CopyConstructible
かつ
CopyAssignable
な参照ラッパー
(クラステンプレート) |
|
(C++20)
|
ある
view
を一意に所有する
range
(クラステンプレート) |
|
(C++20)
|
ある
view
の全要素を含む
range
(エイリアステンプレート) (レンジアダプタオブジェクト) |