Iros
 
Loading...
Searching...
No Matches
enumerate.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/util/forward.h"
7
8namespace di::container::view {
9namespace detail {
10 struct EnumerateFunction;
11
12 template<typename Con>
14
15 template<typename Con>
16 concept ViewEnumerate = requires(Con&& container) { EnumerateView { util::forward<Con>(container) }; };
17
19 template<concepts::ViewableContainer Con>
21 constexpr auto operator()(Con&& container) const -> concepts::View auto {
22 if constexpr (CustomEnumerate<Con>) {
23 return function::tag_invoke(*this, util::forward<Con>(container));
24 } else {
25 return EnumerateView { util::forward<Con>(container) };
26 }
27 }
28 };
29}
30
31constexpr inline auto enumerate = detail::EnumerateFunction {};
32}
33
34namespace di {
35using view::enumerate;
36}
Definition enumerate_view.h:18
Definition tag_invoke.h:33
Definition view.h:10
Definition adjacent.h:9
Definition adjacent.h:8
constexpr auto enumerate
Definition enumerate.h:31
Definition sequence.h:12
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition zstring_parser.h:9