deduction guides für std::unordered_multiset
| Definiert in Header <unordered_set> |
||
| template< class InputIt, |
(1) | (seit C++17) |
| template< class T, class Hash = std::hash<T>, |
(2) | (seit C++17) |
| template< class InputIt, class Alloc > unordered_multiset( InputIt, InputIt, typename /* siehe unten */::size_type, Alloc ) |
(3) | (seit C++17) |
| template< class InputIt, class Hash, class Alloc > unordered_multiset( InputIt, InputIt, typename /* siehe unten */::size_type, Hash, Alloc ) |
(4) | (seit C++17) |
| template< class T, class Alloc > unordered_multiset( std::initializer_list<T>, typename /* siehe unten */::size_type, Alloc ) |
(5) | (seit C++17) |
| template< class T, class Hash, class Alloc > unordered_multiset( std::initializer_list<T>, typename /* siehe unten */::size_type, |
(6) | (seit C++17) |
| template< ranges::input_range R, class Hash = std::hash<ranges::range_value_t<R>>, |
(7) | (seit C++23) |
| template< ranges::input_range R, class Alloc > unordered_multiset( std::from_range_t, R&&, |
(8) | (seit C++23) |
| template< ranges::input_range R, class Alloc > unordered_multiset( std::from_range_t, R&&, Alloc ) |
(9) | (seit C++23) |
| template< ranges::input_range R, class Hash, class Alloc > unordered_multiset( std::from_range_t, R&&, |
(10) | (seit C++23) |
unordered_multiset bereitgestellt, um die Deduktion aus einem Iterator-Bereich (Überladungen (1,3,4)) und std::initializer_list (Überladungen (2,5,6)) zu ermöglichen. Diese Überladung nimmt nur an der Auflösungsfindung teil, wenn InputIt LegacyInputIterator erfüllt, Alloc Allocator erfüllt, weder Hash noch Pred Allocator erfüllen und Hash kein integraler Typ ist.unordered_multiset bereitgestellt, um die Deduktion aus einem std::from_range_t-Tag und einem input_range zu ermöglichen.Hinweis: Der Umfang, bis zu dem die Bibliothek feststellt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass als Minimum integrale Typen nicht als Eingabe-Iteratoren qualifizieren. Ebenso ist der Umfang, bis zu dem sie feststellt, dass ein Typ Allocator nicht erfüllt, nicht spezifiziert, außer dass als Minimum der Member-Typ Alloc::value_type existieren muss und der Ausdruck std::declval<Alloc&>().allocate(std::size_t{}) gutgeformt sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.
Der Parameter `size_type` in diesen Guides bezieht sich auf den `size_type`-Member-Typ des Typs, der vom Deduction Guide abgeleitet wird.
[bearbeiten] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Bereichsweise Konstruktion und Einfügung; Überladungen (7-10) |
[bearbeiten] Beispiel
#include <unordered_set> int main() { // guide #2 deduces std::unordered_multiset<int> std::unordered_multiset s = {1, 2, 3, 4}; // guide #1 deduces std::unordered_multiset<int> std::unordered_multiset s2(s.begin(), s.end()); }