Forward declaration.

Synopsis

Declared in <bslmf_invokeresult.h>

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

Name

Description

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...).

InvokeResult_MemFuncPtrImpDispatch<bslmf::VoidType<decltypeInvokeResult_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...).

InvokeResult_MemFuncPtrImpDispatch<bslmf::VoidType<decltypeInvokeResult_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

Name

Description

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.

Created with MrDocs