[libc++] Remove <string> and <vector> includes from <flat_map> (#114876)
`<string>` doesn't seem to be required at all and `flat_map` doesn't
support `vector<bool>`, so we can include just `vector<T>`. This cuts
the include time in half on my system.
GitOrigin-RevId: 332fda86fb20c6c2cdc58976a8739c6a13110734
diff --git a/include/__flat_map/flat_map.h b/include/__flat_map/flat_map.h
index 5c14c0a..77dc2b4 100644
--- a/include/__flat_map/flat_map.h
+++ b/include/__flat_map/flat_map.h
@@ -11,6 +11,7 @@
#define _LIBCPP___FLAT_MAP_FLAT_MAP_H
#include <__algorithm/lexicographical_compare_three_way.h>
+#include <__algorithm/min.h>
#include <__algorithm/ranges_adjacent_find.h>
#include <__algorithm/ranges_equal.h>
#include <__algorithm/ranges_inplace_merge.h>
@@ -19,11 +20,14 @@
#include <__algorithm/ranges_stable_sort.h>
#include <__algorithm/ranges_unique.h>
#include <__algorithm/ranges_upper_bound.h>
+#include <__algorithm/remove_if.h>
+#include <__assert>
#include <__compare/synth_three_way.h>
#include <__concepts/convertible_to.h>
#include <__concepts/swappable.h>
#include <__config>
#include <__cstddef/byte.h>
+#include <__cstddef/ptrdiff_t.h>
#include <__flat_map/sorted_unique.h>
#include <__functional/invoke.h>
#include <__functional/is_transparent.h>
@@ -34,13 +38,17 @@
#include <__iterator/next.h>
#include <__iterator/ranges_iterator_traits.h>
#include <__iterator/reverse_iterator.h>
+#include <__memory/addressof.h>
#include <__memory/allocator_traits.h>
#include <__memory/uses_allocator.h>
#include <__memory/uses_allocator_construction.h>
+#include <__ranges/access.h>
#include <__ranges/concepts.h>
#include <__ranges/container_compatible_range.h>
#include <__ranges/drop_view.h>
+#include <__ranges/from_range.h>
#include <__ranges/ref_view.h>
+#include <__ranges/size.h>
#include <__ranges/subrange.h>
#include <__ranges/zip_view.h>
#include <__type_traits/conjunction.h>
@@ -52,10 +60,9 @@
#include <__type_traits/maybe_const.h>
#include <__utility/exception_guard.h>
#include <__utility/pair.h>
+#include <__vector/vector.h>
#include <initializer_list>
#include <stdexcept>
-#include <string>
-#include <vector>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/test/libcxx/transitive_includes/cxx03.csv b/test/libcxx/transitive_includes/cxx03.csv
index ae42541..d705412 100644
--- a/test/libcxx/transitive_includes/cxx03.csv
+++ b/test/libcxx/transitive_includes/cxx03.csv
@@ -683,18 +683,12 @@
filesystem utility
filesystem variant
filesystem version
-flat_map algorithm
-flat_map array
flat_map atomic
-flat_map bit
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map cmath
flat_map compare
flat_map concepts
-flat_map cstdarg
flat_map cstddef
flat_map cstdint
flat_map cstdio
@@ -705,27 +699,19 @@
flat_map cwctype
flat_map exception
flat_map initializer_list
-flat_map ios
flat_map iosfwd
flat_map iterator
flat_map limits
-flat_map locale
flat_map memory
-flat_map mutex
flat_map new
flat_map optional
flat_map ratio
flat_map stdexcept
-flat_map streambuf
-flat_map string
-flat_map string_view
-flat_map system_error
flat_map tuple
flat_map type_traits
flat_map typeinfo
flat_map utility
flat_map variant
-flat_map vector
flat_map version
format algorithm
format array
diff --git a/test/libcxx/transitive_includes/cxx11.csv b/test/libcxx/transitive_includes/cxx11.csv
index ae42541..d705412 100644
--- a/test/libcxx/transitive_includes/cxx11.csv
+++ b/test/libcxx/transitive_includes/cxx11.csv
@@ -683,18 +683,12 @@
filesystem utility
filesystem variant
filesystem version
-flat_map algorithm
-flat_map array
flat_map atomic
-flat_map bit
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map cmath
flat_map compare
flat_map concepts
-flat_map cstdarg
flat_map cstddef
flat_map cstdint
flat_map cstdio
@@ -705,27 +699,19 @@
flat_map cwctype
flat_map exception
flat_map initializer_list
-flat_map ios
flat_map iosfwd
flat_map iterator
flat_map limits
-flat_map locale
flat_map memory
-flat_map mutex
flat_map new
flat_map optional
flat_map ratio
flat_map stdexcept
-flat_map streambuf
-flat_map string
-flat_map string_view
-flat_map system_error
flat_map tuple
flat_map type_traits
flat_map typeinfo
flat_map utility
flat_map variant
-flat_map vector
flat_map version
format algorithm
format array
diff --git a/test/libcxx/transitive_includes/cxx14.csv b/test/libcxx/transitive_includes/cxx14.csv
index f14b317..90bff88 100644
--- a/test/libcxx/transitive_includes/cxx14.csv
+++ b/test/libcxx/transitive_includes/cxx14.csv
@@ -701,18 +701,12 @@
filesystem utility
filesystem variant
filesystem version
-flat_map algorithm
-flat_map array
flat_map atomic
-flat_map bit
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map cmath
flat_map compare
flat_map concepts
-flat_map cstdarg
flat_map cstddef
flat_map cstdint
flat_map cstdio
@@ -722,29 +716,20 @@
flat_map cwchar
flat_map cwctype
flat_map exception
-flat_map execution
flat_map initializer_list
-flat_map ios
flat_map iosfwd
flat_map iterator
flat_map limits
-flat_map locale
flat_map memory
-flat_map mutex
flat_map new
flat_map optional
flat_map ratio
flat_map stdexcept
-flat_map streambuf
-flat_map string
-flat_map string_view
-flat_map system_error
flat_map tuple
flat_map type_traits
flat_map typeinfo
flat_map utility
flat_map variant
-flat_map vector
flat_map version
format algorithm
format array
diff --git a/test/libcxx/transitive_includes/cxx17.csv b/test/libcxx/transitive_includes/cxx17.csv
index d4bc0a3..2f908e7 100644
--- a/test/libcxx/transitive_includes/cxx17.csv
+++ b/test/libcxx/transitive_includes/cxx17.csv
@@ -707,18 +707,12 @@
filesystem variant
filesystem vector
filesystem version
-flat_map algorithm
-flat_map array
flat_map atomic
-flat_map bit
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map cmath
flat_map compare
flat_map concepts
-flat_map cstdarg
flat_map cstddef
flat_map cstdint
flat_map cstdio
@@ -729,27 +723,19 @@
flat_map cwctype
flat_map exception
flat_map initializer_list
-flat_map ios
flat_map iosfwd
flat_map iterator
flat_map limits
-flat_map locale
flat_map memory
-flat_map mutex
flat_map new
flat_map optional
flat_map ratio
flat_map stdexcept
-flat_map streambuf
-flat_map string
-flat_map string_view
-flat_map system_error
flat_map tuple
flat_map type_traits
flat_map typeinfo
flat_map utility
flat_map variant
-flat_map vector
flat_map version
format algorithm
format array
diff --git a/test/libcxx/transitive_includes/cxx20.csv b/test/libcxx/transitive_includes/cxx20.csv
index 3041665..1a198aa 100644
--- a/test/libcxx/transitive_includes/cxx20.csv
+++ b/test/libcxx/transitive_includes/cxx20.csv
@@ -703,18 +703,12 @@
filesystem variant
filesystem vector
filesystem version
-flat_map algorithm
-flat_map array
flat_map atomic
-flat_map bit
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map cmath
flat_map compare
flat_map concepts
-flat_map cstdarg
flat_map cstddef
flat_map cstdint
flat_map cstdio
@@ -725,27 +719,19 @@
flat_map cwctype
flat_map exception
flat_map initializer_list
-flat_map ios
flat_map iosfwd
flat_map iterator
flat_map limits
-flat_map locale
flat_map memory
-flat_map mutex
flat_map new
flat_map optional
flat_map ratio
flat_map stdexcept
-flat_map streambuf
-flat_map string
-flat_map string_view
-flat_map system_error
flat_map tuple
flat_map type_traits
flat_map typeinfo
flat_map utility
flat_map variant
-flat_map vector
flat_map version
format algorithm
format array
diff --git a/test/libcxx/transitive_includes/cxx23.csv b/test/libcxx/transitive_includes/cxx23.csv
index 48d4425..854ad1b 100644
--- a/test/libcxx/transitive_includes/cxx23.csv
+++ b/test/libcxx/transitive_includes/cxx23.csv
@@ -361,30 +361,19 @@
filesystem tuple
filesystem typeinfo
filesystem version
-flat_map array
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map compare
-flat_map cstddef
flat_map cstdint
-flat_map cstdio
-flat_map cstdlib
flat_map cstring
flat_map cwchar
flat_map cwctype
flat_map initializer_list
-flat_map iosfwd
flat_map limits
flat_map new
flat_map optional
flat_map stdexcept
-flat_map string
-flat_map string_view
flat_map tuple
-flat_map typeinfo
-flat_map vector
flat_map version
format array
format cctype
diff --git a/test/libcxx/transitive_includes/cxx26.csv b/test/libcxx/transitive_includes/cxx26.csv
index 944002f..ba2faae 100644
--- a/test/libcxx/transitive_includes/cxx26.csv
+++ b/test/libcxx/transitive_includes/cxx26.csv
@@ -361,30 +361,19 @@
filesystem tuple
filesystem typeinfo
filesystem version
-flat_map array
flat_map cctype
-flat_map cerrno
flat_map climits
-flat_map clocale
flat_map compare
-flat_map cstddef
flat_map cstdint
-flat_map cstdio
-flat_map cstdlib
flat_map cstring
flat_map cwchar
flat_map cwctype
flat_map initializer_list
-flat_map iosfwd
flat_map limits
flat_map new
flat_map optional
flat_map stdexcept
-flat_map string
-flat_map string_view
flat_map tuple
-flat_map typeinfo
-flat_map vector
flat_map version
format array
format cctype