[#BloombergLP-bslmf-InvokeResult_MemPtrArgQualifiers-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-0c.adoc[InvokeResult&lowbar;MemPtrArgQualifiers]&lt;t&lowbar;MEMOF&lowbar;CLASS, t&lowbar;ARG&lowbar;TYPE, false&gt;
:relfileprefix: ../../
:mrdocs:

This metafunction determines which cv qualifiers and reference qualifiers should be propagated from the first argument of `invoke&lowbar;result`&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;MEMOF&lowbar;CLASS,
    class t&lowbar;ARG&lowbar;TYPE&gt;
struct xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-0c.adoc[InvokeResult&lowbar;MemPtrArgQualifiers]&lt;t&lowbar;MEMOF&lowbar;CLASS, t&lowbar;ARG&lowbar;TYPE, false&gt;
    : &sol;&ast; implementation-defined &ast;&sol;
----

== Description

This specialization is instantiated when `t&lowbar;ARG&lowbar;TYPE` is not derived from `t&lowbar;MEMOF&lowbar;CLASS` and is assumed to be a pointer or smart pointer type&period; If type `A` is the result of dereferencing an object of type `t&lowbar;ARG&lowbar;TYPE`, then the constant `k&lowbar;IS&lowbar;LVALUE` is true iff `A` is an lvalue reference&semi; the constant `k&lowbar;IS&lowbar;CONST` is true iff `A` is a const&hyphen;qualified reference&semi; and the constant `k&lowbar;IS&lowbar;VOLATILE` is true iff `A` is a volatile&hyphen;qualified reference&period;

== 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_MemPtrArgQualifiers-02/AnyLvalue.adoc[`AnyLvalue`] 
| Type convertible from any lvalue type&period; Used for overload resolution in metafunctions&period;
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/AnyRvalue.adoc[`AnyRvalue`] 
| Type convertible from any rvalue type&period; Used for overload resolution in metafunctions&period;
|===


== Enums

[cols="1"]
|===
| Name
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/_04enum.adoc[`Unnamed enum`] 
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/checkConst-09.adoc[`checkConst`] 
| `checkConst` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/checkLvalue-06.adoc[`checkLvalue`] 
| `checkLvalue` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/checkVolatile-02.adoc[`checkVolatile`] 
| `checkVolatile` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-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_MemPtrArgQualifiers-02/uncv-03.adoc[`uncv`] 
| `uncv` overloads
| xref:BloombergLP/bslmf/InvokeResult_MemPtrArgQualifiers-02/unpoint-03.adoc[`unpoint`] 
| `unpoint` overloads
|===



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