Skip to content

Commit 6a1ae4d

Browse files
committed
fix decltype expression in noexcept clause of sequence's connect member function
1 parent 7ac6017 commit 6a1ae4d

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

include/exec/sequence.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ namespace experimental::execution
236236
{
237237
using sender_concept = STDEXEC::sender_t;
238238

239+
// Even without an Env, we can sometimes still determine the completion signatures
240+
// of the sequence sender. If any of the child senders has a
241+
// set_error(exception_ptr) completion, then the sequence sender has a
242+
// set_error(exception_ptr) completion. We don't have to ask if any connect call
243+
// throws.
239244
template <class Self, class... Env>
240245
requires(sizeof...(Env) > 0)
241246
|| __has_eptr_completion<STDEXEC::__copy_cvref_t<Self, Sender0>>
@@ -272,10 +277,10 @@ namespace experimental::execution
272277
template <STDEXEC::__decay_copyable Self, class Rcvr>
273278
STDEXEC_ATTRIBUTE(host, device)
274279
constexpr STDEXEC_EXPLICIT_THIS_BEGIN(auto connect)(this Self&& self, Rcvr rcvr)
275-
noexcept(std::is_nothrow_constructible_v<
280+
noexcept(STDEXEC::__nothrow_constructible_from<
276281
_opstate<Rcvr, STDEXEC::__copy_cvref_t<Self, Sender0>, Senders...>,
277282
Rcvr,
278-
decltype(((Self&&) self)._sndrs)>)
283+
decltype((static_cast<Self&&>(self)._sndrs))>)
279284
{
280285
return _opstate<Rcvr, STDEXEC::__copy_cvref_t<Self, Sender0>, Senders...>{
281286
static_cast<Rcvr&&>(rcvr),

0 commit comments

Comments
 (0)