MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / __receive_nested_sequence

Class __receive_nested_sequence

include/exec/sequence/merge_each.hpp:1013–1046  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 2

store_errorMethod · 0.80
nested_sequence_breakMethod · 0.80

Tested by

no test coverage detected