@@ -33,6 +33,8 @@ struct sender_data {
33
33
Data& data;
34
34
Children children;
35
35
};
36
+ template <typename Tag, typename Data, typename Children>
37
+ sender_data (Tag&&, Data&, Children&&) -> sender_data<Tag, Data, Children>;
36
38
37
39
template <typename Sender>
38
40
auto get_sender_data (Sender&& sender) {
@@ -49,33 +51,24 @@ auto get_sender_data(Sender&& sender) {
49
51
sender.size ();
50
52
})
51
53
return [&sender]<::std::size_t ... I>(::std::index_sequence<I...>) {
52
- return ::beman::execution26::detail::sender_data<decltype (sender.template get <0 >()),
53
- decltype (sender.template get <1 >()),
54
- decltype (::std::tie (sender.template get <2 + I>()...))>{
54
+ return ::beman::execution26::detail::sender_data{
55
55
sender.template get <0 >(), sender.template get <1 >(), ::std::tie (sender.template get <2 + I>()...)};
56
56
}(::std::make_index_sequence<::std::decay_t <decltype (sender)>::size () - 2u >{});
57
57
else if constexpr (requires { sender_type{at, at, at, at, at, at}; }) {
58
58
auto && [tag, data, c0, c1, c2, c3] = sender;
59
- return ::beman::execution26::detail::
60
- sender_data<decltype (tag), decltype (data), decltype (::std::tie (c0, c1, c2, c3))>{
61
- tag, data, ::std::tie (c0, c1, c2, c3)};
59
+ return ::beman::execution26::detail::sender_data{tag, data, ::std::tie (c0, c1, c2, c3)};
62
60
} else if constexpr (requires { sender_type{at, at, at, at, at}; }) {
63
61
auto && [tag, data, c0, c1, c2] = sender;
64
- return ::beman::execution26::detail::
65
- sender_data<decltype (tag), decltype (data), decltype (::std::tie (c0, c1, c2))>{
66
- tag, data, ::std::tie (c0, c1, c2)};
62
+ return ::beman::execution26::detail::sender_data{tag, data, ::std::tie (c0, c1, c2)};
67
63
} else if constexpr (requires { sender_type{at, at, at, at}; }) {
68
64
auto && [tag, data, c0, c1] = sender;
69
- return ::beman::execution26::detail::sender_data<decltype (tag), decltype (data), decltype (::std::tie (c0, c1))>{
70
- tag, data, ::std::tie (c0, c1)};
65
+ return ::beman::execution26::detail::sender_data{tag, data, ::std::tie (c0, c1)};
71
66
} else if constexpr (requires { sender_type{at, at, at}; }) {
72
67
auto && [tag, data, c0] = sender;
73
- return ::beman::execution26::detail::sender_data<decltype (tag), decltype (data), decltype (::std::tie (c0))>{
74
- tag, data, ::std::tie (c0)};
68
+ return ::beman::execution26::detail::sender_data{tag, data, ::std::tie (c0)};
75
69
} else if constexpr (requires { sender_type{at, at}; }) {
76
70
auto && [tag, data] = sender;
77
- return ::beman::execution26::detail::sender_data<decltype (tag), decltype (data), ::std::tuple<>>{
78
- tag, data, ::std::tuple<>()};
71
+ return ::beman::execution26::detail::sender_data{ tag, data, ::std::tuple<>()};
79
72
} else {
80
73
return ::beman::execution26::detail::sender_meta<void , void , void >{};
81
74
}
0 commit comments