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...).
Declared in <bslmf_invokeresult.h>
template<
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
struct 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-defined */
| Name | Description |
|---|---|
/* implementation-defined */ | Utility metaprogramming functions inherited by other metaprogramming classes. |
| Name | Description |
|---|---|
AnyLvalue | Type convertible from any lvalue type. Used for overload resolution in metafunctions. |
AnyRvalue | Type convertible from any rvalue type. Used for overload resolution in metafunctions. |
| Name | Description |
|---|---|
type | For C++11 and later, the type of the INVOKE(fn, args...) expression where 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...). |
| Name | Description |
|---|---|
checkConst | checkConst overloads |
checkLvalue | checkLvalue overloads |
checkVolatile | checkVolatile overloads |
myDeclval | Return a reference to the specified t_SOME_TYPE template parameter type; if t_SOME_TYPE is an rvalue, then the returned reference is an rvalue reference. This function is declared but not defined and is intended to be called in an unevaluated context. Because there is no definition, the available constructors for t_SOME_TYPE are irrelevant. |
uncv | uncv overloads |
unpoint | unpoint overloads |