[#BloombergLP-bslmf-InvokeResult_MemObjPtrImpDispatch-0d] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::InvokeResult_MemObjPtrImpDispatch :relfileprefix: ../../ :mrdocs: Forward declaration. == Synopsis Declared in `<bslmf_invokeresult.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class t_VOID_TYPE, bool t_ARG_DERIVES_FROM_CLASS, bool t_ARG_IS_REFERENCE_WRAPPER, class t_FN, class t_ARGTYPE> struct InvokeResult_MemObjPtrImpDispatch; ---- == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-05.adoc[`InvokeResult_MemObjPtrImpDispatch<bslmf::VoidType<decltype((*InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>()).* InvokeResult_ImpUtils::myDeclval<t_FN>())>::type, false, false, t_FN, t_ARGTYPE>`] | Implementation of `invoke_result<t_FN, t_ARGTYPE>`. This specialization is instantiated in C++11 and later when `t_FN` is a pointer‐to‐member‐object type, `t_ARGTYPE` is neither a class type that derives from the class type of `t_FN` nor a specialization of `bsl::reference_wrapper`, and the `INVOKE(fn, arg)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg` is an object of the specified `t_ARGTYPE` type. The `INVOKE(fn, arg)` expression in this case is `(*arg).*fn`. | xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-0a.adoc[`InvokeResult_MemObjPtrImpDispatch<bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().* InvokeResult_ImpUtils::myDeclval<t_FN>())>::type, true, false, t_FN, t_ARGTYPE>`] | Implementation of `invoke_result<t_FN, t_ARGTYPE>`. This specialization is instantiated in C++11 and later when `t_FN` is a pointer‐to‐member‐object type, `t_ARGTYPE` is a class type that derives from the class type of `t_FN`, and the `INVOKE(fn, arg)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg` is an object of the specified `t_ARGTYPE` type. The `INVOKE(fn, arg)` expression in this case is `arg1.*fn`. | xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImpDispatch-02.adoc[`InvokeResult_MemObjPtrImpDispatch<bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().get().* InvokeResult_ImpUtils::myDeclval<t_FN>())>::type, false, true, t_FN, t_ARGTYPE>`] | Implementation of `invoke_result<t_FN, t_ARGTYPE>`. This specialization is instantiated in C++11 and later when `t_FN` is a pointer‐to‐member‐object type, `t_ARGTYPE` is a specialization of `bsl::reference_wrapper`, and the `INVOKE(fn, arg)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg` is an object of the specified `t_ARGTYPE` type. The `INVOKE(fn, arg)` expression in this case is `arg.get().*fn`. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/InvokeResult_MemObjPtrImp-0b.adoc[`InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPE>`] | Implementation of `invoke_result<t_FN, t_ARGTYPES...>`. This specialization is instantiated in C++11 and later when `t_FN` is a pointer‐to‐member‐object type and the `t_ARGTYPES...` pack contains exactly 1 type. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#