Namespaces
Variants

deduction guides for std::unordered_multiset

From cppreference.net

(注:このHTML要素には翻訳対象のテキストコンテンツが含まれていないため、元の構造を保持したまま出力します)
定義済みヘッダー <unordered_set>
template <

class InputIt,
class Hash = std:: hash < typename std:: iterator_traits < InputIt > :: value_type > ,
class Pred = std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,
class Alloc = std:: allocator < typename std:: iterator_traits < InputIt > :: value_type > >
unordered_multiset ( InputIt, InputIt,
typename /* 詳細は下記参照 */ :: size_type = /* 詳細は下記参照 */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type ,

Hash, Pred, Alloc > ;
(1) (C++17以降)
template < class T,

class Hash = std:: hash < T > ,
class Pred = std:: equal_to < T > ,
class Alloc = std:: allocator < T > >
unordered_multiset ( std:: initializer_list < T > ,
typename /* 詳細は下記参照 */ :: size_type = /* 詳細は下記参照 */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

- > unordered_multiset < T, Hash, Pred, Alloc > ;
(2) (C++17以降)
template < class InputIt, class Alloc >

unordered_multiset ( InputIt, InputIt, typename /* 詳細は下記参照 */ :: size_type , Alloc )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type ,
std:: hash < typename std:: iterator_traits < InputIt > :: value_type > ,
std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,

Alloc > ;
(3) (C++17以降)
template < class InputIt, class Hash, class Alloc >

unordered_multiset ( InputIt, InputIt, typename /* 詳細は下記参照 */ :: size_type , Hash, Alloc )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type , Hash,
std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,

Alloc > ;
(4) (C++17以降)
template < class T, class Alloc >

unordered_multiset ( std:: initializer_list < T > , typename /* 詳細は下記参照 */ :: size_type , Alloc )

- > unordered_multiset < T, std:: hash < T > , std:: equal_to < T > , Alloc > ;
(5) (C++17以降)
template < class T, class Hash, class Alloc >

unordered_multiset ( std:: initializer_list < T > , typename /* 詳細は下記参照 */ :: size_type ,
Hash, Alloc )

- > unordered_multiset < T, Hash, std:: equal_to < T > , Alloc > ;
(6) (C++17以降)
template < ranges:: input_range R,

class Hash = std:: hash < ranges:: range_value_t < R >> ,
class Pred = std:: equal_to < ranges:: range_value_t < R >> ,
class Alloc = std:: allocator < ranges:: range_value_t < R >> >
unordered_multiset ( std:: from_range_t , R && ,
typename /* 詳細は下記参照 */ :: size_type = /* 詳細は下記参照 */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

- > unordered_multiset < ranges:: range_value_t < R > , Hash, Pred, Alloc > ;
(7) (C++23以降)
template < ranges:: input_range R, class Alloc >

unordered_multiset ( std:: from_range_t , R && ,
typename /* 詳細は下記参照 */ :: size_type , Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , hash < ranges:: range_value_t < R >> ,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(8) (C++23以降)
template < ranges:: input_range R, class Alloc >

unordered_multiset ( std:: from_range_t , R && , Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , hash < ranges:: range_value_t < R >> ,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(9) (C++23以降)
template < ranges:: input_range R, class Hash, class Alloc >

unordered_multiset ( std:: from_range_t , R && ,
typename /* 詳細は下記参照 */ :: size_type , Hash, Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , Hash,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(10) (C++23以降)
1-6) これらの 推論ガイド は、 unordered_multiset に対してイテレータ範囲(オーバーロード (1,3,4) )および std::initializer_list (オーバーロード (2,5,6) )からの推論を可能にするために提供されています。このオーバーロードは、 InputIt LegacyInputIterator を満たし、 Alloc Allocator を満たし、 Hash および Pred のいずれも Allocator を満たさず、 Hash が整数型でない場合にのみ、オーバーロード解決に参加します。
7-10) これらの推論ガイドは、 unordered_multiset に対して提供されており、 std::from_range_t タグと input_range からの推論を可能にします。

注意: ライブラリが型が LegacyInputIterator を満たさないと判断する範囲は未規定であるが、少なくとも整数型は入力イテレータとして適格ではない。同様に、型が Allocator を満たさないと判断する範囲も未規定であるが、少なくともメンバ型 Alloc::value_type が存在しなければならず、式 std:: declval < Alloc & > ( ) . allocate ( std:: size_t { } ) が未評価オペランドとして扱われた場合に well-formed でなければならない。

これらのガイドにおける size_type パラメータ型は、推論ガイドによって推定された型の size_type メンバ型を参照します。

注記

機能テスト マクロ 標準 機能
__cpp_lib_containers_ranges 202202L (C++23) Ranges-aware 構築と挿入; オーバーロード (7-10)

#include <unordered_set>
int main()
{
    // ガイド #2 は std::unordered_multiset<int> を推論
    std::unordered_multiset s = {1, 2, 3, 4};
    // ガイド #1 は std::unordered_multiset<int> を推論
    std::unordered_multiset s2(s.begin(), s.end());
}