2.0 KiB
[range.common.overview]
25 Ranges library [ranges]
25.7 Range adaptors [range.adaptors]
25.7.20 Common view [range.common]
25.7.20.1 Overview [range.common.overview]
common_view takes a view which has different types for its iterator and sentinel and turns it into a view of the same elements with an iterator and sentinel of the same type.
[Note 1:
common_view is useful for calling legacy algorithms that expect a range's iterator and sentinel types to be the same.
â end note]
The name views::common denotes a range adaptor object ([range.adaptor.object]).
Given a subexpression E, the expression views::common(E) is expression-equivalent to:
-
views::all(E), if decltype((E)) models common_range and views::all(E) is a well-formed expression.
-
Otherwise, common_view{E}.
[Example 1: // Legacy algorithm:template size_t count(ForwardIterator first, ForwardIterator last);
template<forward_range R>void my_algo(R&& r) {auto&& common = views::common(r); auto cnt = count(common.begin(), common.end()); // ...} â end example]