17 lines
1.1 KiB
Markdown
17 lines
1.1 KiB
Markdown
[range.elementsof]
|
||
|
||
# 25 Ranges library [[ranges]](./#ranges)
|
||
|
||
## 25.5 Range utilities [[range.utility]](range.utility#range.elementsof)
|
||
|
||
### 25.5.6 Class template elements_of [range.elementsof]
|
||
|
||
Specializations of elements_of encapsulate a range and
|
||
act as a tag in overload sets to disambiguate
|
||
when a range should be treated as a sequence
|
||
rather than a single value[.](#sentence-1)
|
||
|
||
[*Example [1](#example-1)*: template<bool YieldElements> generator<any> f(ranges::[input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]") auto&& r) {if constexpr (YieldElements)co_yield ranges::elements_of(r); // yield each element of relseco_yield r; // yield r as a single value} â *end example*]
|
||
|
||
namespace std::ranges {template<[range](range.range#concept:range "25.4.2 Ranges [range.range]") R, class Allocator = allocator<byte>>struct elements_of {[[no_unique_address]] R range; [[no_unique_address]] Allocator allocator = Allocator(); }; template<class R, class Allocator = allocator<byte>> elements_of(R&&, Allocator = Allocator()) -> elements_of<R&&, Allocator>;}
|