std::ranges::view_interface<D>::size
constexpr auto size() requires ranges::forward_range<D> &&
std::sized_sentinel_for<ranges::sentinel_t<D>,
ranges::iterator_t<D>>;
|
(1) | (seit C++20) |
constexpr auto size() const requires ranges::forward_range<const D> &&
std::sized_sentinel_for<ranges::sentinel_t<const D>,
ranges::iterator_t<const D>>;
|
(2) | (seit C++20) |
Die Standardimplementierung der size()-Mitgliedsfunktion ermittelt die Größe des Bereichs, indem sie die Differenz zwischen der Endmarke und dem Start-Iterator berechnet.
Rückgabewert
to-unsigned-like
(
ranges::
end
(
static_cast
<
D
&
>
(
this
)
)
-
ranges::
begin
(
static_cast
<
D
&
>
(
this
)
)
)
.
to-unsigned-like
(
ranges::
end
(
static_cast
<
const
D
&
>
(
this
)
)
-
ranges::
begin
(
static_cast
<
const
D
&
>
(
this
)
)
)
.
Hinweise
Folgende abgeleitete Typen können die Standardimplementierung von
size()
verwenden:
Folgende Typen sind von
std::ranges::view_interface
abgeleitet und deklarieren keine eigene
size()
Memberfunktion, können jedoch die Standardimplementierung nicht verwenden, weil ihre Iterator- und Sentinel-Typen niemals
sized_sentinel_for
erfüllen:
- 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
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 3646 | C++20 |
die Standardimplementierungen der
size
-Funktionen lieferten einen vorzeichenbehafteten Typ zurück
|
sie liefern einen vorzeichenlosen Typ zurück |
Siehe auch
|
(C++17)
(C++20)
|
gibt die Größe eines Containers oder Arrays zurück
(Funktions-Template) |
|
(C++20)
|
gibt einen Integer gleich der Größe eines Ranges zurück
(Customization Point Object) |
|
(C++20)
|
gibt einen vorzeichenbehafteten Integer gleich der Größe eines Ranges zurück
(Customization Point Object) |