@@ -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