std::ranges::view_interface<D>::size
From cppreference.com
< cpp | ranges | view interface
| constexpr auto size() requires ranges::forward_range<D> && std::sized_sentinel_for<ranges::sentinel_t<D>, |
(1) | (C++20以降) |
| constexpr auto size() const requires ranges::forward_range<const D> && std::sized_sentinel_for<ranges::sentinel_t<const D>, |
(2) | (C++20以降) |
size() メンバ関数のデフォルト実装は、センチネルと先頭イテレータの差を計算することによって範囲のサイズを取得します。
目次 |
[編集] 戻り値
1)
to-unsigned-like (ranges::end(static_cast<D&>(this)) - ranges::begin(static_cast<D&>(this)))。2)
to-unsigned-like (ranges::end(static_cast<const D&>(this)) - ranges::begin(static_cast<const D&>(this)))。[編集] ノート
以下の派生型は、size() のデフォルト実装を使用する場合があります。
std::ranges::view_interface から派生し、独自の size() メンバ関数を宣言しない以下の型は、そのイテレータとセンチネルの型が sized_sentinel_for を満たさないため、デフォルト実装を使用できません。
- std::ranges::basic_istream_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::split_view
- std::ranges::take_while_view
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3646 | C++20 | size 関数のデフォルト実装は符号付き型を返していました。 |
符号なし型を返します。 |
[編集] 関連項目
| (C++17)(C++20) |
コンテナまたは配列のサイズを返す (関数テンプレート) |
| (C++20) |
rangeのサイズと等しい整数を返す (カスタマイゼーションポイントオブジェクト) |
| (C++20) |
rangeのサイズと等しい符号付き整数を返す (カスタマイゼーションポイントオブジェクト) |