cuda::experimental::stf::sump::operator|#

Overloads#

operator|(__l, __r)#

template<class _L, class _R, ::cuda::std::enable_if_t<detail::__is_exception_sink_v<_L> || detail::__is_exception_sink_v<_R>, int> = 0>
auto cuda::experimental::stf::sump::operator|(
_L &&__l,
_R &&__r
)

Alternation: _L gets first claim; if it forwards by throwing, _R handles the original exception; on the code channel a status _L forwards goes to _R.

fwd is the two-sided identity. Same operand constraint as &.

operator|(fwd_t, __r)#

template<class _R, ::cuda::std::enable_if_t<detail::__normalizes_to_exception_sink_v<_R>, int> = 0>
auto cuda::experimental::stf::sump::operator|(
fwd_t,
_R &&__r
)

Left identity of |: fwd | p is __normalize(p) when that result is sink-tagged.

operator|(__l, fwd_t)#

template<class _L, ::cuda::std::enable_if_t<!::cuda::std::is_same_v<::cuda::std::remove_cvref_t<_L>, fwd_t> && detail::__normalizes_to_exception_sink_v<_L>, int> = 0>
auto cuda::experimental::stf::sump::operator|(
_L &&__l,
fwd_t
)

Right identity of |. fwd itself is excluded so fwd | fwd is not ambiguous.