diff --git a/libcxx/include/__memory/compressed_pair.h b/libcxx/include/__memory/compressed_pair.h --- a/libcxx/include/__memory/compressed_pair.h +++ b/libcxx/include/__memory/compressed_pair.h @@ -11,10 +11,13 @@ #define _LIBCPP___MEMORY_COMPRESSED_PAIR_H #include <__config> +#include <__fwd/get.h> +#include <__fwd/tuple.h> +#include <__tuple/tuple_indices.h> #include <__type_traits/dependent_type.h> #include <__utility/forward.h> #include <__utility/move.h> -#include // needed in c++03 for some constructors +#include <__utility/piecewise_construct.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__string/char_traits.h b/libcxx/include/__string/char_traits.h --- a/libcxx/include/__string/char_traits.h +++ b/libcxx/include/__string/char_traits.h @@ -14,15 +14,14 @@ #include <__algorithm/find_end.h> #include <__algorithm/find_first_of.h> #include <__algorithm/min.h> +#include <__compare/ordering.h> #include <__config> #include <__functional/hash.h> #include <__iterator/iterator_traits.h> -#include +#include <__type_traits/is_constant_evaluated.h> #include #include -#include #include -#include #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS # include // for wmemcpy diff --git a/libcxx/include/functional b/libcxx/include/functional --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -534,7 +534,6 @@ #include #include #include // TODO: find out why removing this breaks the modules build -#include #include #include #include @@ -544,6 +543,7 @@ #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include #endif diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm @@ -1,7 +1,5 @@ bit climits -cmath -compare concepts cstddef cstdint @@ -12,6 +10,5 @@ iosfwd limits new -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any @@ -1,7 +1,5 @@ atomic climits -cmath -compare concepts cstddef cstdint @@ -15,7 +13,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier @@ -1,7 +1,5 @@ atomic climits -cmath -compare cstddef cstdint cstdlib @@ -12,6 +10,5 @@ limits new ratio -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset @@ -18,6 +18,5 @@ stdexcept string string_view -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable @@ -23,7 +23,6 @@ string string_view system_error -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque @@ -15,7 +15,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm @@ -1,8 +1,6 @@ algorithm bit climits -cmath -compare concepts cstddef cstdint @@ -13,6 +11,5 @@ iosfwd limits new -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list @@ -15,7 +15,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list @@ -15,7 +15,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.memory b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.memory --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.memory +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.memory @@ -15,7 +15,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue @@ -16,7 +16,6 @@ new ratio stdexcept -tuple type_traits typeinfo vector diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random @@ -23,7 +23,6 @@ stdexcept string string_view -tuple type_traits typeinfo vector diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set @@ -12,6 +12,5 @@ new optional stdexcept -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex @@ -22,6 +22,5 @@ string string_view system_error -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack @@ -16,7 +16,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string @@ -17,6 +17,5 @@ new stdexcept string_view -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error @@ -19,6 +19,5 @@ stdexcept string string_view -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set @@ -12,6 +12,5 @@ new optional stdexcept -tuple type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector @@ -15,7 +15,6 @@ new ratio stdexcept -tuple type_traits typeinfo version diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp --- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp @@ -14,8 +14,9 @@ // minmax(const T& a, const T& b, Compare comp); #include -#include #include +#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/bind_return_type.pass.cpp b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/bind_return_type.pass.cpp --- a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/bind_return_type.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/bind_return_type.pass.cpp @@ -19,9 +19,10 @@ // only SFINAE away when too few arguments are provided. Otherwise they should // be well formed and should ignore any additional arguments. +#include #include #include -#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp --- a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp @@ -16,9 +16,10 @@ // be treated as a subexpression in a bind call. // https://llvm.org/PR51753 -#include #include +#include #include +#include struct MyBind { int operator()(int x, int y) const { return 10*x + y; } diff --git a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp --- a/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp @@ -16,9 +16,10 @@ // to indicate that T should be treated as a placeholder type. // https://llvm.org/PR51753 -#include #include +#include #include +#include struct My2 {}; template<> struct std::is_placeholder : std::integral_constant {}; diff --git a/libcxx/test/std/utilities/function.objects/func.identity/identity.pass.cpp b/libcxx/test/std/utilities/function.objects/func.identity/identity.pass.cpp --- a/libcxx/test/std/utilities/function.objects/func.identity/identity.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.identity/identity.pass.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "MoveOnly.h" diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.verify.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.verify.cpp --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.verify.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.verify.cpp @@ -16,9 +16,10 @@ // // This signature was removed in C++17 +#include #include #include -#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp @@ -15,8 +15,9 @@ // This test runs in C++03, but we have deprecated using std::function in C++03. // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX03_FUNCTION -#include #include +#include +#include #include "test_macros.h" #include "count_new.h" diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "test_macros.h" #include "count_new.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp @@ -12,9 +12,10 @@ // ranges::equal_to +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp @@ -12,9 +12,10 @@ // ranges::greater +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp @@ -12,9 +12,10 @@ // ranges::greater_equal +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp @@ -12,9 +12,10 @@ // ranges::less +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp @@ -12,9 +12,10 @@ // ranges::less_equal +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp b/libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp --- a/libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp @@ -12,9 +12,10 @@ // ranges::not_equal_to +#include #include #include -#include +#include #include "test_macros.h" #include "compare_types.h" diff --git a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp --- a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp +++ b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp @@ -11,9 +11,10 @@ // raw_storage_iterator +#include #include #include -#include +#include #include "test_macros.h" #include diff --git a/libcxx/test/support/container_test_types.h b/libcxx/test/support/container_test_types.h --- a/libcxx/test/support/container_test_types.h +++ b/libcxx/test/support/container_test_types.h @@ -84,9 +84,10 @@ * */ -#include #include +#include #include +#include #include "test_macros.h"