| 1011 | |
| 1012 | template <class _NextReceiver, class _OperationBase, class _NestedSeqOp> |
| 1013 | struct __receive_nested_sequence |
| 1014 | { |
| 1015 | using receiver_concept = receiver_tag; |
| 1016 | |
| 1017 | using __next_op_base_t = __next_operation_base<_NextReceiver, _OperationBase, _NestedSeqOp>; |
| 1018 | |
| 1019 | __next_op_base_t* __next_seq_op_; |
| 1020 | _OperationBase* __op_; |
| 1021 | |
| 1022 | template <class _NestedSequence> |
| 1023 | auto set_value(_NestedSequence&& __sequence) noexcept |
| 1024 | { |
| 1025 | using __receiver_t = __receive_nested_values_t<_OperationBase>; |
| 1026 | using __nested_op_t = __compute::__nested_sequence_op_t<_NestedSequence, _OperationBase>; |
| 1027 | static constexpr bool __is_nothrow = |
| 1028 | __nothrow_subscribable<_NestedSequence, __receiver_t> |
| 1029 | && STDEXEC::__nothrow_constructible_from<_NestedSeqOp, __nested_op_t>; |
| 1030 | STDEXEC_TRY |
| 1031 | { |
| 1032 | auto& __nested_seq_op = __next_seq_op_->__nested_seq_op_.__emplace_from( |
| 1033 | subscribe, |
| 1034 | static_cast<_NestedSequence&&>(__sequence), |
| 1035 | __receiver_t{__next_seq_op_, __op_}); |
| 1036 | STDEXEC::start(__nested_seq_op); |
| 1037 | } |
| 1038 | STDEXEC_CATCH_ALL |
| 1039 | { |
| 1040 | if constexpr (!__is_nothrow) |
| 1041 | { |
| 1042 | __op_->store_error(std::current_exception()); |
| 1043 | __op_->nested_sequence_break(); |
| 1044 | } |
| 1045 | } |
| 1046 | } |
| 1047 | |
| 1048 | template <class _Error> |
| 1049 | void set_error(_Error&& __error) noexcept |
nothing calls this directly
no test coverage detected