[#BloombergLP-bslmf-InvokeResult_MemObjPtrImpDispatch-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-0d.adoc[InvokeResult&lowbar;MemObjPtrImpDispatch]&lt;bslmf::VoidType&lt;decltype(InvokeResult&lowbar;ImpUtils&colon;&colon;myDeclval&lt;t&lowbar;ARGTYPE&gt;()&period;get()&period;&ast;
                 InvokeResult&lowbar;ImpUtils&colon;&colon;myDeclval&lt;t&lowbar;FN&gt;())&gt;::type, false, true, t&lowbar;FN, t&lowbar;ARGTYPE&gt;
:relfileprefix: ../../
:mrdocs:

Implementation of `invoke&lowbar;result&lt;t&lowbar;FN, t&lowbar;ARGTYPE&gt;`&period; This specialization is instantiated in C&plus;&plus;11 and later when `t&lowbar;FN` is a pointer&hyphen;to&hyphen;member&hyphen;object type, `t&lowbar;ARGTYPE` is a specialization of `bsl&colon;&colon;reference&lowbar;wrapper`, and the `INVOKE(fn, arg)` expression is well&hyphen;formed given `fn` is an object of the specified `t&lowbar;FN` type and `arg` is an object of the specified `t&lowbar;ARGTYPE` type&period; The `INVOKE(fn, arg)` expression in this case is `arg&period;get()&period;&ast;fn`&period;

== Synopsis

Declared in `&lt;bslmf&lowbar;invokeresult&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;FN,
    class t&lowbar;ARGTYPE&gt;
struct xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-0d.adoc[InvokeResult&lowbar;MemObjPtrImpDispatch]&lt;bslmf::VoidType&lt;decltype(InvokeResult&lowbar;ImpUtils&colon;&colon;myDeclval&lt;t&lowbar;ARGTYPE&gt;()&period;get()&period;&ast;
                 InvokeResult&lowbar;ImpUtils&colon;&colon;myDeclval&lt;t&lowbar;FN&gt;())&gt;::type, false, true, t&lowbar;FN, t&lowbar;ARGTYPE&gt;
    : &sol;&ast; implementation-defined &ast;&sol;
----

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `&sol;&ast; implementation-defined &ast;&sol;`
| Utility metaprogramming functions inherited by other metaprogramming classes&period;
|===

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/AnyLvalue.adoc[`AnyLvalue`] 
| Type convertible from any lvalue type&period; Used for overload resolution in metafunctions&period;
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/AnyRvalue.adoc[`AnyRvalue`] 
| Type convertible from any rvalue type&period; Used for overload resolution in metafunctions&period;
|===


== Type Aliases

[cols="1"]
|===
| Name
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/type.adoc[`type`] 
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/checkConst-00.adoc[`checkConst`] 
| `checkConst` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/checkLvalue-08.adoc[`checkLvalue`] 
| `checkLvalue` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/checkVolatile-01.adoc[`checkVolatile`] 
| `checkVolatile` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/myDeclval.adoc[`myDeclval`] 
| Return a reference to the specified `t&lowbar;SOME&lowbar;TYPE` template parameter type&semi; if `t&lowbar;SOME&lowbar;TYPE` is an rvalue, then the returned reference is an rvalue reference&period; This function is declared but not defined and is intended to be called in an unevaluated context&period; Because there is no definition, the available constructors for `t&lowbar;SOME&lowbar;TYPE` are irrelevant&period;
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/uncv-0d.adoc[`uncv`] 
| `uncv` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02/unpoint-08.adoc[`unpoint`] 
| `unpoint` overloads
|===



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