template <typename R, CompletionTokenError Error> \
struct AsExpectedSignature<R(Error) qualifier> \
{ \
using type = R(boost::outcome_v2::result<void, std::remove_cvref_t<Error>>) qualifier; \
}; \
template <typename R, CompletionTokenError Error, typename Arg> \
struct AsExpectedSignature<R(Error, Arg) qualifier> \
{ \
using type = R(boost::outcome_v2::result<std::decay_t<Arg>, std::remove_cvref_t<Error>>) qualifier; \
}; \
template <typename R, CompletionTokenError Error, typename Arg, typename... Args> \
struct AsExpectedSignature<R(Error, Arg, Args...) qualifier> \
{ \
using type = R(boost::outcome_v2::result<std::tuple<std::decay_t<Arg>, std::decay_t<Args>...>, std::remove_cvref_t<Error>>) qualifier; \
};