Namespaces
Variants

deduction guides for std::multiset

From cppreference.net

Definido en el encabezado <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) (desde 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) (desde 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) (desde C++17)
template < class Key, class Alloc >

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

- > multiset < Key, std:: less < Key > , Alloc > ;
(4) (desde 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) (desde 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) (desde C++23)
1-4) Estas guías de deducción se proporcionan para multiset para permitir la deducción desde un rango de iteradores (sobrecargas (1,3) ) y std::initializer_list (sobrecargas (2,4) ).
5,6) Estas guías de deducción se proporcionan para multiset para permitir la deducción desde una etiqueta std::from_range_t y un input_range .

Estas sobrecargas participan en la resolución de sobrecarga solo si InputIt satisface LegacyInputIterator , Alloc satisface Allocator , y Comp no satisface Allocator .

Nota: el grado en que la biblioteca determina que un tipo no satisface LegacyInputIterator no está especificado, excepto que como mínimo los tipos integrales no califican como iteradores de entrada. Del mismo modo, el grado en que determina que un tipo no satisface Allocator no está especificado, excepto que como mínimo el tipo miembro Alloc::value_type debe existir y la expresión std:: declval < Alloc & > ( ) . allocate ( std:: size_t { } ) debe estar bien formada cuando se trata como un operando no evaluado.

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción con reconocimiento de rangos; sobrecarga (5,6)

Ejemplo

#include <set>
int main()
{
    // la guía #2 deduce std::multiset<int>
    std::multiset s = {1, 2, 3, 4};
    // la guía #1 deduce std::multiset<int>
    std::multiset s2(s.begin(), s.end());
}