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

Return a `TARGET&lowbar;TYPE` object constructed from the given arguments&period;

== Synopsis

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

[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
make(
    ALLOCATOR const& allocator,
    ARG1&& argument1,
    ARGS&&&period;&period;&period; arguments);
----

== Description

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;

== Return Value

`TARGET&lowbar;TYPE` object constructed from the given arguments

== Parameters

[cols="1,4"]
|===
| Name| Description
| *allocator*
| allocator supplied to the constructor, if applicable
| *argument1*
| first constructor argument
| *arguments*
| remaining constructor arguments
|===


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