[#BloombergLP-bslstl-Function_InvokerUtil_IsFuncInvocable-05]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::Function&lowbar;InvokerUtil&lowbar;IsFuncInvocable
:relfileprefix: ../../
:mrdocs:

forward declaration

== Synopsis

Declared in `&lt;bslstl&lowbar;function&lowbar;invokerutil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class PROTOTYPE,
    class FUNC&gt;
struct Function&lowbar;InvokerUtil&lowbar;IsFuncInvocable;
----

== Specializations

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/Function_InvokerUtil_IsFuncInvocable-0e.adoc[`Function&lowbar;InvokerUtil&lowbar;IsFuncInvocable&lt;RET(ARGS&period;&period;&period;), FUNC&gt;`] 
| This `struct` template implements a Boolean metafunction that publicly inherits from `bsl&colon;&colon;true&lowbar;type` if an object of the specified `FUNC` type is invocable with the specified `RET` and `ARGS&period;&period;&period;`, and publicly inherits from `bsl&colon;&colon;false&lowbar;type` otherwise&period; An object of `FUNC` type is invocable with `RET` and `ARGS&period;&period;&period;` if it is Lvalue&hyphen;Callable with arguments having the types of the `ARGS&period;&period;&period;`, and returns an object of type explicitly convertible to `RET`&period; If `RET` is `void`, then any type is considered explicitly convertible to `RET`&period;
|===


== Derived Classes

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/Function_InvokerUtil/IsFuncInvocable.adoc[`IsFuncInvocable`] 
| This `struct` template implements a Boolean metafunction that publicly inherits from `bsl&colon;&colon;true&lowbar;type` if an object of the specified `FUNC` type is invocable under the specified `PROTOTYPE`, and publicly inherits from `bsl&colon;&colon;false&lowbar;type` otherwise&period; An object of `FUNC` type is invocable under the `PROTOTYPE` if it is Lvalue&hyphen;Callable with the arguments of the `PROTOTYPE` (as forwarded by the facilities of &apos;bslmf&lowbar;forwardingtype), and returns an object of type explicitly convertible to the return type of the `PROTOTYPE`&period; If the return type of the `PROTOTYPE` is `void`, then any type is considered explicitly convertible to the return type of the `PROTOTYPE`&period; This `struct` template requires `PROTOTYPE` to be an unqualified function type&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
