This component-private struct template provides a boolean metafunction that derives from bsl::true_type if a bsl::function object having a prototype of RET(ARGS...) is constructible from an object of type FUNC, and derives from bsl::false_type otherwise. This metafunction is a wrapper around bsl::invoke_result that unwraps FUNC if it is a specialization of bslalg::NothrowMovableWrapper; and, if bsl::invoke_result provides a nested type typedef for FUNC and RET is non-void, checks that the return type of the invoke operation on FUNC is convertible to RET.
Declared in <bslstl_function.h>
template<
class RET,
class FUNC,
class... ARGS>
struct Function_IsInvocableWithPrototype<RET(ARGS...), FUNC>
: Function_InvokerUtil::IsFuncInvocable<RET(ARGS...), FUNC>
| Name | Description |
|---|---|
Function_InvokerUtil::IsFuncInvocable<RET(ARGS...), FUNC> | This struct template implements a Boolean metafunction that publicly inherits from bsl::true_type if an object of the specified FUNC type is invocable under the specified PROTOTYPE, and publicly inherits from bsl::false_type otherwise. An object of FUNC type is invocable under the PROTOTYPE if it is Lvalue-Callable with the arguments of the PROTOTYPE (as forwarded by the facilities of 'bslmf_forwardingtype), and returns an object of type explicitly convertible to the return type of the PROTOTYPE. If the return type of the PROTOTYPE is void, then any type is considered explicitly convertible to the return type of the PROTOTYPE. This struct template requires PROTOTYPE to be an unqualified function type. |