Namespaces
Variants

deduction guides for std::multiset

From cppreference.net

Défini dans l'en-tête <set>
template <

class InputIt,
class Comp = std:: less < typename std:: iterator_traits < InputIt > :: value_type > ,
class Alloc = std:: allocator < typename std:: iterator_traits < InputIt > :: value_type >>
multiset ( InputIt, InputIt, Comp = Comp ( ) , Alloc = Alloc ( ) )

- > multiset < typename std:: iterator_traits < InputIt > :: value_type , Comp, Alloc > ;
(1) (depuis C++17)
template <

class Key, class Comp = std:: less < Key > ,
class Alloc = std:: allocator < Key > >
multiset ( std:: initializer_list < Key > , Comp = Comp ( ) , Alloc = Alloc ( ) )

- > multiset < Key, Comp, Alloc > ;
(2) (depuis C++17)
template < class InputIt, class Alloc >

multiset ( InputIt, InputIt, Alloc )
- > multiset < typename std:: iterator_traits < InputIt > :: value_type ,

std:: less < typename std:: iterator_traits < InputIt > :: value_type > , Alloc > ;
(3) (depuis C++17)
template < class Key, class Alloc >

multiset ( std:: initializer_list < Key > , Alloc )

- > multiset < Key, std:: less < Key > , Alloc > ;
(4) (depuis C++17)
template < ranges:: input_range R, class Compare = less < ranges:: range_value_t < R >> ,

class Alloc = std:: allocator < ranges:: range_value_t < R >> >
multiset ( std:: from_range_t , R && , Compare = Compare ( ) , Alloc = Alloc ( ) )

- > multiset < ranges:: range_value_t < R > , Compare, Alloc > ;
(5) (depuis C++23)
template < ranges:: input_range R, class Alloc >

multiset ( std:: from_range_t , R && , Alloc )

- > multiset < ranges:: range_value_t < R > , std:: less < ranges:: range_value_t < R >> , Alloc > ;
(6) (depuis C++23)
1-4) Ces guides de déduction sont fournis pour multiset afin de permettre la déduction à partir d'une plage d'itérateurs (surcharges (1,3) ) et de std::initializer_list (surcharges (2,4) ).
5,6) Ces guides de déduction sont fournis pour multiset afin de permettre la déduction à partir d'un tag std::from_range_t et d'un input_range .

Ces surcharges participent à la résolution de surcharge seulement si InputIt satisfait LegacyInputIterator , Alloc satisfait Allocator , et Comp ne satisfait pas Allocator .

Note : la mesure dans laquelle la bibliothèque détermine qu'un type ne satisfait pas LegacyInputIterator n'est pas spécifiée, sauf qu'au minimum les types entiers ne sont pas qualifiés comme itérateurs d'entrée. De même, la mesure dans laquelle elle détermine qu'un type ne satisfait pas Allocator n'est pas spécifiée, sauf qu'au minimum le type membre Alloc::value_type doit exister et l'expression std:: declval < Alloc & > ( ) . allocate ( std:: size_t { } ) doit être bien formée lorsqu'elle est traitée comme un opérande non évalué.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Construction et insertion compatibles avec les gammes ; surcharge (5,6)

Exemple

#include <set>
int main()
{
    // guide #2 déduit std::multiset<int>
    std::multiset s = {1, 2, 3, 4};
    // guide #1 déduit std::multiset<int>
    std::multiset s2(s.begin(), s.end());
}