[#bsl-Pair_BslmaIdiom]
= xref:bsl.adoc[bsl]::Pair&lowbar;BslmaIdiom
:relfileprefix: ../
:mrdocs:

Metafunction selecting how `TYPE` accepts a `bslma&colon;&colon;Allocator&ast;`&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;pair&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class TYPE&gt;
struct Pair&lowbar;BslmaIdiom
    : bsl::conditional&lt;!BloombergLP&colon;&colon;bslma&colon;&colon;UsesBslmaAllocator&lt;TYPE&gt;&colon;&colon;value, Pair&lowbar;BslmaIdiomNone, bsl::conditional&lt;BloombergLP&colon;&colon;bslmf&colon;&colon;UsesAllocatorArgT&lt;TYPE&gt;&colon;&colon;value, Pair&lowbar;BslmaIdiomAllocatorArgT, Pair&lowbar;BslmaIdiomAtEnd&gt;::type&gt;::type
----

== Description

This component&hyphen;private meta&hyphen;function determines whether the specified `TYPE` template parameter takes a `bslma&colon;&colon;Allocator&ast;` constructor argument and, if so, whether that argument is at the end of the argument list or at the beginning of the argument list following an argument of type `bsl&colon;&colon;allocator&lowbar;arg&lowbar;t`&period; This type derived from `bsl&colon;&colon;integral&lowbar;constant&lt;int, N&gt;` where `N` is the number of additional parameters required to pass an allocator to a constructor using the chosen idiom&period;

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `bsl::conditional&lt;!BloombergLP&colon;&colon;bslma&colon;&colon;UsesBslmaAllocator&lt;TYPE&gt;&colon;&colon;value, Pair&lowbar;BslmaIdiomNone, bsl::conditional&lt;BloombergLP&colon;&colon;bslmf&colon;&colon;UsesAllocatorArgT&lt;TYPE&gt;&colon;&colon;value, Pair&lowbar;BslmaIdiomAllocatorArgT, Pair&lowbar;BslmaIdiomAtEnd&gt;::type&gt;::type`
| 
|===


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