The goal is to fail with an easier-to-understand error on failed
`static_assert()` than cryptic template substitution errors when
the function provided to e.g. `safe_then()` doesn't match the type
carried within an errorated future.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
static_assert((... && std::is_invocable_v<ErrorVisitorT,
AllowedErrors>),
"provided Error Visitor is not exhaustive");
-
+ static_assert(std::is_void_v<ValueT> ? std::is_invocable_v<ValueFuncT>
+ : std::is_invocable_v<ValueFuncT, ValueT>,
+ "Value Func is not invocable with future's value");
using value_func_result_t =
typename std::conditional_t<std::is_void_v<ValueT>,
std::invoke_result<ValueFuncT>,