[#BloombergLP-bslmf-MemberFunctionPointerTraits_ClassType]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::MemberFunctionPointerTraits&lowbar;ClassType
:relfileprefix: ../../
:mrdocs:

Metafunction to deduce the cv&hyphen;qualified class type of a member function&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;PROTOTYPE,
    class t&lowbar;BSLMF&lowbar;RETURN,
    class t&lowbar;TYPE,
    class&period;&period;&period; t&lowbar;ARGS&gt;
class MemberFunctionPointerTraits&lowbar;ClassType;
----

== Description

This `class` determines whether the specified `t&lowbar;PROTOTYPE` is a `const`, `volatile` or `noexcept` member function of the specified `t&lowbar;TYPE`&period; The `Type` member will be a correctly const and&sol;or volatile qualified version of `t&lowbar;TYPE`&period; This metafunction is necessary because some old compilers do not correctly dispatch to the correct partial specialization of `MemberFunctionPointerTraits&lowbar;Imp` based on cv&hyphen;qualification of the member&hyphen;function pointer&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/MemberFunctionPointerTraits_ClassType/CType.adoc[`CType`] 
| Depending on `IS&lowbar;CONST`, add or do not add a const qualifier to `t&lowbar;TYPE`&period;
| xref:BloombergLP/bslmf/MemberFunctionPointerTraits_ClassType/Type.adoc[`Type`] 
| Depending on `IS&lowbar;VOLATILE`, add or do not add a volatile qualifier to `t&lowbar;TYPE`&period;
|===


== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/MemberFunctionPointerTraits_ClassType/_04enum.adoc[`Unnamed enum`] 
| Bit flags encoding `const` and `volatile` qualification of the member function&period;
|===



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