deduction guides für std::multimap
| Definiert in Header <map> |
||
| template< class InputIt, class Comp = std::less<iter_key_t<InputIt>>, |
(1) | (seit C++17) |
| template< class Key, class T, |
(2) | (seit C++17) |
| template< class InputIt, class Alloc > multimap( InputIt, InputIt, Alloc ) |
(3) | (seit C++17) |
| template< class Key, class T, class Alloc > multimap( std::initializer_list<std::pair<Key, T>>, Alloc ) |
(4) | (seit C++17) |
| template< ranges::input_range R, class Compare = std::less<range_key_t<R>, class Alloc = std::allocator<range_to_alloc_t<R>> > |
(5) | (seit C++23) |
| template< ranges::input_range R, class Alloc > multimap( std::from_range_t, R&&, Alloc ) |
(6) | (seit C++23) |
| Hilfstypenalias für den expositions-only-Bereich |
||
| template< class InputIter > using iter_val_t = |
(nur Exposition*) | |
| template< class InputIter > using iter_key_t = |
(nur Exposition*) | |
| template< class InputIter > using iter_mapped_t = |
(nur Exposition*) | |
| template< class InputIter > using iter_to_alloc_t = |
(nur Exposition*) | |
| template< ranges::input_range Range > using range_key_t = |
(seit C++23) (nur Exposition*) |
|
| template< ranges::input_range Range > using range_mapped_t = |
(seit C++23) (nur Exposition*) |
|
| template< ranges::input_range Range > using range_to_alloc_t = |
(seit C++23) (nur Exposition*) |
|
multimap bereitgestellt, um die Ableitung aus einem Iterator-Bereich (Überladungen (1,3)) und std::initializer_list (Überladungen (2,4)) zu ermöglichen.multimap bereitgestellt, um die Ableitung aus einem Tag std::from_range_t und einem input_range zu ermöglichen.Diese Überladungen nehmen an der Überladungsauflösung teil, nur wenn InputIt LegacyInputIterator erfüllt, Alloc Allocator erfüllt und Comp Allocator nicht erfüllt.
Hinweis: Das Ausmaß, in dem die Bibliothek feststellt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass als Minimum ganzzahlige Typen nicht als Eingabeiteratoren qualifiziert sind. Ebenso ist das Ausmaß, in dem sie feststellt, dass ein Typ Allocator nicht erfüllt, nicht spezifiziert, außer dass als Minimum der Mitgliedstyp Alloc::value_type existieren muss und der Ausdruck std::declval<Alloc&>().allocate(std::size_t{}) gut gebildet sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.
[edit] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Bereichsbezogene Konstruktion und Einfügung; Überladung (5,6) |
[edit] Beispiel
#include <map> int main() { // std::multimap m1 = {{"foo", 1}, {"bar", 2}}; // Error: braced-init-list has no type; cannot deduce // pair<Key, T> from {"foo", 1} or {"bar", 2} std::multimap m1 = {std::pair{"foo", 2}, {"bar", 3}}; // guide #2 std::multimap m2(m1.begin(), m1.end()); // guide #1 }
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3025 | C++17 | initializer-list-Führer nehmen std::pair<const Key, T> | verwenden std::pair<Key, T> |