24 Ranges library [ranges]

24.7 Range adaptors [range.adaptors]

24.7.11 Join view [range.join]

24.7.11.1 Overview [range.join.overview]

join_­view flattens a view of ranges into a view.
The name views​::​join denotes a range adaptor object ([range.adaptor.object]).
Given a subexpression E, the expression views​::​join(E) is expression-equivalent to join_­view<views​::​all_­t<decltype((E))>>{E}.
[Example 1: vector<string> ss{"hello", " ", "world", "!"}; join_view greeting{ss}; for (char ch : greeting) cout << ch; // prints: hello world! — end example]