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) | (since C++20) | 
|   constexpr auto size() const requires ranges::forward_range<const D> &&     std::sized_sentinel_for<ranges::sentinel_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.
Return value
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))).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
 
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 | 
See also
|    (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)  |