std::ranges::view_interface::size - cppreference.com (original) (raw)
The default implementation of size() member function obtains the size of the range by calculating the difference between the sentinel and the beginning iterator.
[edit] Return value
[edit] Notes
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
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3646 | C++20 | the default implementations of size functions returned a signed type | they return unsigned type |
[edit] See also
| | returns the size of a container or array (function template) [edit] | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | returns an integer equal to the size of a range(customization point object)[edit] | | | returns a signed integer equal to the size of a range(customization point object)[edit] |