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.
Synopsis
Declared in <bslstl_function_invokerutil.h>
template<
class PROTOTYPE,
class FUNC>
struct IsFuncInvocable
: Function_InvokerUtil_IsFuncInvocable<PROTOTYPE, FUNC>
Description
Note that IsFuncInvocable is qualitatively different than std::is_invocable_r, in that it makes concessions for supporting legacy behavior of bsl::function. std::is_invocable_r<RET, FUNC, ARGS...> requires that the return type of the invocation of FUNC with ARGS... be implicitly convertible to RET, as opposed to explicitly convertible. Further, the use of bslmf::ForwardingType to forward arguments in the invoker of a bsl::function creates qualitatively different behavior than the argument forwarding mechanism used by the standard INVOKE pseudo‐expression.
Base Classes
Name |
Description |
|
forward declaration |
Derived Classes
Name |
Description |
|
This component‐private |
Created with MrDocs