@@ -35,12 +35,33 @@ namespace std {
3535 class Predicate>
3636 typename flat_map<Key, T, Compare, KeyContainer, MappedContainer>::size_type
3737 erase_if(flat_map<Key, T, Compare, KeyContainer, MappedContainer>& c, Predicate pred);
38+
39+ // [flat.multimap], class template flat_multimap
40+ template<class Key, class T, class Compare = less<Key>,
41+ class KeyContainer = vector<Key>, class MappedContainer = vector<T>>
42+ class flat_multimap;
43+
44+ struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; };
45+ inline constexpr sorted_equivalent_t sorted_equivalent{};
46+
47+ template<class Key, class T, class Compare, class KeyContainer, class MappedContainer,
48+ class Allocator>
49+ struct uses_allocator<flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>,
50+ Allocator>;
51+
52+ // [flat.multimap.erasure], erasure for flat_multimap
53+ template<class Key, class T, class Compare, class KeyContainer, class MappedContainer,
54+ class Predicate>
55+ typename flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>::size_type
56+ erase_if(flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>& c, Predicate pred);
3857*/
3958
4059#include < __assert> // all public C++ headers provide the assertion handler
4160#include < __config>
4261#include < __flat_map/flat_map.h>
62+ #include < __flat_map/flat_multimap.h>
4363#include < __flat_map/sorted_unique.h>
64+ #include < __flat_map/sorted_equivalent.h>
4465#include < version>
4566
4667// standard required includes
0 commit comments