[#bsl-Pair_First-09-2constructor-0b0] = xref:bsl.adoc[bsl]::xref:bsl/Pair_First-09.adoc[Pair_First<TYPE&&>]::Pair_First :relfileprefix: ../../ :mrdocs: Constructors == Synopses Declared in `<bslstl_pair.h>` Bind to `first` the entity of (template parameter) `TYPE` that is bound to the `first` reference of `other`. Note that, unlike the primary template, these constructors must be declared and defaulted as the user‐declared copy‐assignment operator would inhibit the declaration of the move constructor, which in turn would mean that the implicitly declared constructors for the derived `pair` class would be just the copy constructor taking a `const` reference, even when the second element is move‐only. Declaring the move constructor deletes the copy constructor unless it too is declared and defaulted. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- xref:bsl/Pair_First-09/2constructor-03.adoc[Pair_First](xref:bsl/Pair_First-09.adoc[Pair_First] const&) = default; ---- [.small]#xref:bsl/Pair_First-09/2constructor-03.adoc[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- xref:bsl/Pair_First-09/2constructor-04.adoc[Pair_First](xref:bsl/Pair_First-09.adoc[Pair_First]&&) = default; ---- [.small]#xref:bsl/Pair_First-09/2constructor-04.adoc[_» more..._]# Bind the specified `value` into the `first` reference‐member. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr explicit xref:bsl/Pair_First-09/2constructor-02.adoc[Pair_First](TYPE&& value); ---- [.small]#xref:bsl/Pair_First-09/2constructor-02.adoc[_» more..._]# Bind the specified 'value' into the 'first' reference‐member. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class PARAM, class = void> requires std::is_constructible<TYPE, PARAM>::value constexpr explicit xref:bsl/Pair_First-09/2constructor-0b4.adoc[Pair_First](PARAM&& value); ---- [.small]#xref:bsl/Pair_First-09/2constructor-0b4.adoc[_» more..._]# Construct the `first` member of a `pair`, forwarding in order the elements in the specified `argsPack` to the corresponding constructor of (template parameter) `TYPE`. The length of the `argsPack` is equal to the length of the specified (template parameter pack) `I...` and passed to the constructor via the `Pair_IndexSequence` object. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class ARG> constexpr xref:bsl/Pair_First-09/2constructor-0e.adoc[Pair_First]( std::tuple<ARG>&& arg, xref:BloombergLP/bslstl/Pair_IndexSequence.adoc[BloombergLP::bslstl::Pair_IndexSequence<0U>]); ---- [.small]#xref:bsl/Pair_First-09/2constructor-0e.adoc[_» more..._]# Bind the specified 'value' into the 'first' reference‐member. The specified 'basicAllocator' is not used. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class PARAM> constexpr xref:bsl/Pair_First-09/2constructor-01.adoc[Pair_First]( PARAM&& value, xref:BloombergLP/bslma/Allocator.adoc[BloombergLP::bslma::Allocator]* basicAllocator, xref:bsl/Pair_BslmaIdiomNone.adoc[Pair_BslmaIdiomNone]); ---- [.small]#xref:bsl/Pair_First-09/2constructor-01.adoc[_» more..._]# [.small]#Created with https://www.mrdocs.com[MrDocs]#