A callable object f of type F is Callable for argument types ArgTypes and return type
R if the expression INVOKE(f, declval<ArgTypes>()..., R), considered as an unevaluated
operand (Clause 5), is well formed (19.14.3 [func.require]) and, if R is not void, implicitly
convertible to R.