[#BloombergLP-bslmf-InvokeResult_AddCVRef]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::InvokeResult&lowbar;AddCVRef
:relfileprefix: ../../
:mrdocs:

Starting with type, `t&lowbar;UNQUAL&lowbar;TYPE`, generate a new type by applying the following steps in order&colon;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;UNQUAL&lowbar;TYPE,
    bool t&lowbar;IS&lowbar;CONST,
    bool t&lowbar;IS&lowbar;VOLATILE,
    bool t&lowbar;IS&lowbar;LVALUE&gt;
struct InvokeResult&lowbar;AddCVRef;
----

== Description

1&period; If the specified `t&lowbar;IS&lowbar;CONST` parameter is true, apply `bsl&colon;&colon;add&lowbar;const`&semi; otherwise leave unchanged&period; 2&period; If the specified `t&lowbar;IS&lowbar;VOLATILE` parameter is true, apply `bsl&colon;&colon;add&lowbar;volatile`&semi; otherwise leave unchanged&period; 3&period; If the specified `t&lowbar;IS&lowbar;LVALUE` parameter is true, apply `bsl&colon;&colon;add&lowbar;lvalue&lowbar;reference`&semi; otherwise leave unchanged&period;

Set the `type` member to the resulting type&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/InvokeResult_AddCVRef/type.adoc[`type`] 
| Type produced by applying the specified cv&hyphen; and reference&hyphen;qualifiers&period;
|===



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