10be1883cSHui// -*- C++ -*- 20be1883cSHui//===----------------------------------------------------------------------===// 30be1883cSHui// 40be1883cSHui// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 50be1883cSHui// See https://llvm.org/LICENSE.txt for license information. 60be1883cSHui// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 70be1883cSHui// 80be1883cSHui//===----------------------------------------------------------------------===// 90be1883cSHui 100be1883cSHui#ifndef _LIBCPP_FLAT_MAP 110be1883cSHui#define _LIBCPP_FLAT_MAP 120be1883cSHui 130be1883cSHui/* 140be1883cSHui Header <flat_map> synopsis 150be1883cSHui 160be1883cSHui#include <compare> // see [compare.syn] 170be1883cSHui#include <initializer_list> // see [initializer.list.syn] 180be1883cSHui 190be1883cSHuinamespace std { 200be1883cSHui // [flat.map], class template flat_map 210be1883cSHui template<class Key, class T, class Compare = less<Key>, 220be1883cSHui class KeyContainer = vector<Key>, class MappedContainer = vector<T>> 230be1883cSHui class flat_map; 240be1883cSHui 250be1883cSHui struct sorted_unique_t { explicit sorted_unique_t() = default; }; 260be1883cSHui inline constexpr sorted_unique_t sorted_unique{}; 270be1883cSHui 280be1883cSHui template<class Key, class T, class Compare, class KeyContainer, class MappedContainer, 290be1883cSHui class Allocator> 300be1883cSHui struct uses_allocator<flat_map<Key, T, Compare, KeyContainer, MappedContainer>, 310be1883cSHui Allocator>; 320be1883cSHui 330be1883cSHui // [flat.map.erasure], erasure for flat_map 340be1883cSHui template<class Key, class T, class Compare, class KeyContainer, class MappedContainer, 350be1883cSHui class Predicate> 360be1883cSHui typename flat_map<Key, T, Compare, KeyContainer, MappedContainer>::size_type 370be1883cSHui erase_if(flat_map<Key, T, Compare, KeyContainer, MappedContainer>& c, Predicate pred); 38*def50f70SHui 39*def50f70SHui // [flat.multimap], class template flat_multimap 40*def50f70SHui template<class Key, class T, class Compare = less<Key>, 41*def50f70SHui class KeyContainer = vector<Key>, class MappedContainer = vector<T>> 42*def50f70SHui class flat_multimap; 43*def50f70SHui 44*def50f70SHui struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; }; 45*def50f70SHui inline constexpr sorted_equivalent_t sorted_equivalent{}; 46*def50f70SHui 47*def50f70SHui template<class Key, class T, class Compare, class KeyContainer, class MappedContainer, 48*def50f70SHui class Allocator> 49*def50f70SHui struct uses_allocator<flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>, 50*def50f70SHui Allocator>; 51*def50f70SHui 52*def50f70SHui // [flat.multimap.erasure], erasure for flat_multimap 53*def50f70SHui template<class Key, class T, class Compare, class KeyContainer, class MappedContainer, 54*def50f70SHui class Predicate> 55*def50f70SHui typename flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>::size_type 56*def50f70SHui erase_if(flat_multimap<Key, T, Compare, KeyContainer, MappedContainer>& c, Predicate pred); 570be1883cSHui*/ 580be1883cSHui 59b9a2658aSNikolas Klauser#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 60b9a2658aSNikolas Klauser# include <__cxx03/__config> 61b9a2658aSNikolas Klauser#else 620be1883cSHui# include <__config> 634b8bf6aaSLouis Dionne 644b8bf6aaSLouis Dionne# if _LIBCPP_STD_VER >= 23 650be1883cSHui# include <__flat_map/flat_map.h> 66*def50f70SHui# include <__flat_map/flat_multimap.h> 67*def50f70SHui# include <__flat_map/sorted_equivalent.h> 680be1883cSHui# include <__flat_map/sorted_unique.h> 694b8bf6aaSLouis Dionne# endif 704b8bf6aaSLouis Dionne 714b8bf6aaSLouis Dionne// for feature-test macros 720be1883cSHui# include <version> 730be1883cSHui 740be1883cSHui// standard required includes 750be1883cSHui# include <compare> 760be1883cSHui# include <initializer_list> 770be1883cSHui 780be1883cSHui# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 790be1883cSHui# pragma GCC system_header 800be1883cSHui# endif 81b9a2658aSNikolas Klauser#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 820be1883cSHui 830be1883cSHui#endif // _LIBCPP_FLAT_MAP 84