constexpr auto size() requires ranges::forward_range<D> && std::sized_sentinel_for<ranges::sentinel_t<D>, ranges::iterator_t<D>>; | (1) | (since 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) | (since C++20) |
The default implementation of size()
member function obtains the size of the range by calculating the difference between the sentinel and the beginning iterator.
derived
be static_cast<D&>(*this)
. Equivalent to return ranges::end(derived) - ranges::begin(derived);
.derived
is static_cast<const D&>(*this)
.(none).
The difference between the sentinel and the beginning iterator of the value of the derived type.
Following derived types may use the default implementation of size()
:
Following types are derived from std::ranges::view_interface
and do not declare their own size()
member function, but they cannot use the default implementation, because their iterator and sentinel types never satisfy 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++17)(C++20) | returns the size of a container or array (function template) |
(C++20) | returns an integer equal to the size of a range (customization point object) |
(C++20) | returns a signed integer equal to the size of a range (customization point object) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/view_interface/size