in include/unifex/via.hpp [279:300]
friend constexpr blocking_kind tag_invoke(
tag_t<blocking>,
const sender& sender) {
const auto predBlocking = blocking(sender.pred_);
const auto succBlocking = blocking(sender.succ_);
if (predBlocking == blocking_kind::never &&
succBlocking == blocking_kind::never) {
return blocking_kind::never;
} else if (
predBlocking == blocking_kind::always_inline &&
succBlocking == blocking_kind::always_inline) {
return blocking_kind::always_inline;
} else if (
(predBlocking == blocking_kind::always_inline ||
predBlocking == blocking_kind::always) &&
(succBlocking == blocking_kind::always_inline ||
succBlocking == blocking_kind::always)) {
return blocking_kind::always;
} else {
return blocking_kind::maybe;
}
}