[#BloombergLP-bslma-ConstructionUtil-make-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::xref:BloombergLP/bslma/ConstructionUtil.adoc[ConstructionUtil]::make
:relfileprefix: ../../../
:mrdocs:

`make` overloads

== Synopses

Declared in `&lt;bslma&lowbar;constructionutil&period;h&gt;`

Return, by value, an object of the specified (template parameter) `TARGET&lowbar;TYPE`, having default value&period; If `allocator` is a `bslma`&hyphen;compatible allocator and `TARGET&lowbar;TYPE` supports `bslma`&hyphen;style allocation, `allocator` is passed to the extended default constructor&semi; otherwise, `allocator` is ignored&period; Note that this method is available only for compilers that reliably implement copy&sol;move elision (i&period;e&period;, RVO) on the returned object&period; This copy&sol;move elision is required starting with C&plus;&plus;17 and is widely implemented, though optional, prior to C&plus;&plus;17&period;


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class TARGET&lowbar;TYPE,
    class ALLOCATOR&gt;
static
TARGET&lowbar;TYPE
xref:BloombergLP/bslma/ConstructionUtil/make-04.adoc[make](ALLOCATOR const& allocator);
----

[.small]#xref:BloombergLP/bslma/ConstructionUtil/make-04.adoc[_» more&period;&period;&period;_]#

Return, by value, an object of the specified (template parameter) `TARGET&lowbar;TYPE`, constructed by forwarding the specified `argument1` and the (variable number of) additional specified `arguments` to the corresponding constructor of `TARGET&lowbar;TYPE`&period; If the specified `allocator` is a bslma&hyphen;compatible allocator and `TARGET&lowbar;TYPE` supports `bslma`&hyphen;style allocation, the allocator is passed to the constructor&semi; otherwise, `allocator` is ignored&period; Note that this method is available only for compilers that reliably implement copy&sol;move elision (i&period;e&period;, RVO) on the returned object&period; This copy&sol;move elision is required starting with C&plus;&plus;17 and is widely implemented, though optional, prior to C&plus;&plus;17&period; Note that, in C&plus;&plus;03, perfect forwarding is limited such that any lvalue reference in the `arguments` parameter pack is const&hyphen;qualified when forwarded to the `TARGET&lowbar;TYPE` constructor&semi; only `argument1` can be forwarded as an unqualified lvalue&period;


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class TARGET&lowbar;TYPE,
    class ALLOCATOR,
    class ARG1,
    class&period;&period;&period; ARGS&gt;
static
TARGET&lowbar;TYPE
xref:BloombergLP/bslma/ConstructionUtil/make-07.adoc[make](
    ALLOCATOR const& allocator,
    ARG1&& argument1,
    ARGS&&&period;&period;&period; arguments);
----

[.small]#xref:BloombergLP/bslma/ConstructionUtil/make-07.adoc[_» more&period;&period;&period;_]#


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