Files
cppdraft_translate/cppdraft/range/elementsof.md
2025-10-25 03:02:53 +03:00

1.1 KiB

[range.elementsof]

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 generator f(ranges::input_range 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 R, class Allocator = allocator>struct elements_of {no_unique_address R range; no_unique_address Allocator allocator = Allocator(); }; template<class R, class Allocator = allocator> elements_of(R&&, Allocator = Allocator()) -> elements_of<R&&, Allocator>;}