[#BloombergLP-bslmf-InvokeResult_MemFuncPtrImpDispatch-076] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::InvokeResult_MemFuncPtrImpDispatch :relfileprefix: ../../ :mrdocs: Forward declaration. == Synopsis Declared in `<bslmf_invokeresult.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class t_VOID_TYPE, bool t_ARG1_DERIVES_FROM_CLASS, bool t_ARG1_IS_REFERENCE_WRAPPER, class t_FN, class t_ARG1TYPE, class... t_ARGTYPES> struct InvokeResult_MemFuncPtrImpDispatch; ---- == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/InvokeResult_MemFuncPtrImpDispatch-0f.adoc[`InvokeResult_MemFuncPtrImpDispatch<bslmf::VoidType<decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).* InvokeResult_ImpUtils::myDeclval<t_FN>())( InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type, false, false, t_FN, t_ARG1TYPE, t_ARGTYPES...>`] | Implementation of `invoke_result<t_FN, t_ARG1TYPE, t_ARGTYPES...>`. This specialization is instantiated in C++11 and later when `t_FN` is a pointer‐to‐member‐function type, `t_ARG1TYPE` 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, arg1, args...)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg1, args...` are objects of the specified `t_ARG1TYPE, t_ARGTYPES...` types. The `INVOKE(fn, arg1, args...)` expression in this case is `((*arg1).*fn)(args...)`. | xref:BloombergLP/bslmf/InvokeResult_MemFuncPtrImpDispatch-01.adoc[`InvokeResult_MemFuncPtrImpDispatch<bslmf::VoidType<decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().* InvokeResult_ImpUtils::myDeclval<t_FN>())( InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type, true, false, t_FN, t_ARG1TYPE, t_ARGTYPES...>`] | 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‐function type, `t_ARG1TYPE` is a class type that derives from the class type of `t_FN`, and the `INVOKE(fn, arg1, args...)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg1, args...` are objects of the specified `t_ARG1TYPE, t_ARGTYPES...` types. The `INVOKE(fn, arg1, args...)` expression in this case is `(arg1.*fn)(args...)`. | xref:BloombergLP/bslmf/InvokeResult_MemFuncPtrImpDispatch-071.adoc[`InvokeResult_MemFuncPtrImpDispatch<bslmf::VoidType<decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().* InvokeResult_ImpUtils::myDeclval<t_FN>())( InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type, false, true, t_FN, t_ARG1TYPE, t_ARGTYPES...>`] | 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‐function type, `t_ARG1TYPE` is a specialization of `bsl::reference_wrapper`, and the `INVOKE(fn, arg1, args...)` expression is well‐formed given `fn` is an object of the specified `t_FN` type and `arg1, args...` are objects of the specified `t_ARG1TYPE, t_ARGTYPES...` types. The `INVOKE(fn, arg1, args...)` expression in this case is `(arg1.get().*fn)(args...)`. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/InvokeResult_MemFuncPtrImp-0cb.adoc[`InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES...>`] | 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‐function type, and the `t_ARGTYPES...` pack contains 1 type or more. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#