[range.elementsof] (original) (raw)
25 Ranges library [ranges]
25.5 Range utilities [range.utility]
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.
[Example 1: template<bool YieldElements>generator<any> f(ranges::input_range auto&& r) { if constexpr (YieldElements) co_yield ranges::elements_of(r); else co_yield r; } — _end example_]
namespace std::ranges { template<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>;}