Skip to content

Commit 9bed199

Browse files
authored
Merge pull request #1785 from ericniebler/conserve-templates-in-ignore-all-values
untangle nested templated lambdas in `ignore_all_values`
2 parents 6ddedb4 + 52f0207 commit 9bed199

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

include/exec/sequence/ignore_all_values.hpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,19 @@ namespace exec {
3939
namespace __ignore_all_values {
4040
using namespace STDEXEC;
4141

42+
constexpr auto __complete_fn = []<class _Receiver, class _Tag, class... _Args>(
43+
_Receiver&& __rcvr,
44+
_Tag,
45+
_Args&&... __args) noexcept {
46+
_Tag()(static_cast<_Receiver&&>(__rcvr), static_cast<_Args&&>(__args)...);
47+
};
48+
49+
constexpr auto __visit_fn =
50+
[]<class _Receiver, class _Tuple>(_Receiver&& __rcvr, _Tuple&& __tupl) noexcept {
51+
STDEXEC::__apply(
52+
__complete_fn, static_cast<_Tuple&&>(__tupl), static_cast<_Receiver&&>(__rcvr));
53+
};
54+
4255
template <class _ResultVariant>
4356
struct __result_type : __immovable {
4457
template <class... _Args>
@@ -61,15 +74,9 @@ namespace exec {
6174
} else if constexpr (STDEXEC::__mapply<STDEXEC::__msize, _ResultVariant>::value != 0) {
6275
STDEXEC_ASSERT(__result_.index() != __variant_npos);
6376
STDEXEC::__visit(
64-
[&]<class _Tuple>(_Tuple&& __tuple) noexcept {
65-
STDEXEC::__apply(
66-
[&]<__completion_tag _Tag, class... _Args>(
67-
_Tag __completion, _Args&&... __args) noexcept {
68-
__completion(static_cast<_Receiver&&>(__rcvr), static_cast<_Args&&>(__args)...);
69-
},
70-
static_cast<_Tuple&&>(__tuple));
71-
},
72-
static_cast<_ResultVariant&&>(__result_));
77+
__visit_fn,
78+
static_cast<_ResultVariant&&>(__result_),
79+
static_cast<_Receiver&&>(__rcvr));
7380
}
7481
}
7582

0 commit comments

Comments
 (0)