[#bsl-unordered_multiset-009]
= xref:bsl.adoc[bsl]::xref:bsl/unordered_multiset-06c.adoc[unordered&lowbar;multiset&lt;KEY, HASH, EQUAL, ALLOCATOR&gt;]
:relfileprefix: ../
:mrdocs:

Deduce the template parameter `KEY` from the `value&lowbar;type` of the initializer&lowbar;list supplied to the constructor of `unordered&lowbar;multiset`&period; Deduce the template parameters `HASH`, EQUAL and `ALLOCATOR` from the other parameters passed to the constructor&period; This deduction guide does not participate unless&colon; (1) the supplied `HASH` is invocable with a `KEY`, (2) the supplied `EQUAL` is invocable with two `KEY`s, and (3) the supplied allocator meets the requirements of a standard allocator&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class KEY,
    class HASH = xref:bsl/hash-06.adoc[bsl::hash&lt;KEY&gt;],
    class EQUAL = xref:bsl/equal_to-0d.adoc[bsl::equal&lowbar;to&lt;KEY&gt;],
    class ALLOCATOR = xref:bsl/allocator-0df.adoc[bsl::allocator&lt;KEY&gt;]&gt;
requires std&colon;&colon;is&lowbar;invocable&lowbar;v&lt;HASH, const KEY&amp;&gt; &amp;&amp; std&colon;&colon;is&lowbar;invocable&lowbar;v&lt;EQUAL, const KEY&amp;, const KEY&amp;&gt; &amp;&amp; bsl&colon;&colon;IsStdAllocator&lowbar;v&lt;ALLOCATOR&gt;
xref:bsl/unordered_multiset-06c.adoc[unordered&lowbar;multiset&lt;KEY, HASH, EQUAL, ALLOCATOR&gt;](
    std::initializer&lowbar;list&lt;KEY&gt;,
    bsl::allocator&lowbar;traits&lt;ALLOCATOR&gt;::size&lowbar;type,
    HASH,
    EQUAL,
    ALLOCATOR) -> xref:bsl/unordered_multiset-06c.adoc[unordered&lowbar;multiset&lt;KEY, HASH, EQUAL, ALLOCATOR&gt;];
----


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