[libcxx-commits] [libcxx] [libc++] Add test_iterators.h to the modulemap (PR #181351)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Fri Feb 13 07:57:32 PST 2026


https://github.com/philnik777 updated https://github.com/llvm/llvm-project/pull/181351

>From 8a25e3f9a5bcbc878fa5990f7d4a26a9f0258b4a Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Fri, 13 Feb 2026 13:12:13 +0100
Subject: [PATCH] [libc++] Add test_iterators.h to the modulemap

---
 libcxx/include/module.modulemap.in                       | 1 +
 .../containers/sequence/sequence_container_benchmarks.h  | 1 +
 .../nothrow_forward_iterator.compile.pass.cpp            | 1 +
 .../nothrow_input_iterator.compile.pass.cpp              | 1 +
 .../filesystems/class.path/path.req/is_pathable.pass.cpp | 1 +
 .../libcxx/iterators/bounded_iter/arithmetic.pass.cpp    | 1 +
 .../libcxx/iterators/bounded_iter/comparison.pass.cpp    | 2 ++
 .../iterators/capacity_aware_iter/arithmetic.pass.cpp    | 1 +
 .../iterators/capacity_aware_iter/comparison.pass.cpp    | 1 +
 .../iterators/capacity_aware_iter/dereference.pass.cpp   | 2 ++
 .../iterator.concepts/cpp20_iter_traits.compile.pass.cpp | 1 +
 libcxx/test/libcxx/iterators/iterator_with_data.pass.cpp | 4 ++++
 libcxx/test/libcxx/iterators/product_iterator.pass.cpp   | 1 +
 libcxx/test/libcxx/iterators/unwrap_iter.pass.cpp        | 1 +
 .../alg.modifying.operations/alg.copy/copy.pass.cpp      | 1 +
 .../alg.copy/copy_backward.pass.cpp                      | 1 +
 .../alg.modifying.operations/alg.copy/copy_n.pass.cpp    | 1 +
 .../alg.copy/ranges.copy.pass.cpp                        | 1 +
 .../alg.copy/ranges.copy_backward.pass.cpp               | 1 +
 .../alg.copy/ranges.copy_n.pass.cpp                      | 1 +
 .../alg.modifying.operations/alg.fill/fill.pass.cpp      | 1 +
 .../alg.modifying.operations/alg.fill/fill_n.pass.cpp    | 1 +
 .../alg.fill/ranges.fill.pass.cpp                        | 1 +
 .../alg.fill/ranges.fill_n.pass.cpp                      | 1 +
 .../alg.generate/ranges_generate.pass.cpp                | 1 +
 .../alg.generate/ranges_generate_n.pass.cpp              | 1 +
 .../alg.modifying.operations/alg.move/move.pass.cpp      | 1 +
 .../alg.move/move_backward.pass.cpp                      | 1 +
 .../alg.modifying.operations/alg.move/pstl.move.pass.cpp | 1 +
 .../alg.partitions/is_partitioned.pass.cpp               | 5 +++--
 .../alg.partitions/partition_copy.pass.cpp               | 1 +
 .../alg.partitions/partition_point.pass.cpp              | 1 +
 .../alg.partitions/ranges_partition.pass.cpp             | 1 +
 .../alg.partitions/ranges_partition_copy.pass.cpp        | 1 +
 .../alg.partitions/ranges_partition_point.pass.cpp       | 1 +
 .../alg.partitions/ranges_stable_partition.pass.cpp      | 2 ++
 .../alg.random.sample/ranges_sample.pass.cpp             | 1 +
 .../alg.random.sample/sample.pass.cpp                    | 6 ++++--
 .../alg.random.shuffle/ranges_shuffle.pass.cpp           | 1 +
 .../alg.remove/ranges_remove_copy.pass.cpp               | 1 +
 .../alg.remove/ranges_remove_copy_if.pass.cpp            | 1 +
 .../alg.modifying.operations/alg.remove/remove.pass.cpp  | 1 +
 .../alg.remove/remove_copy.pass.cpp                      | 1 +
 .../alg.remove/remove_copy_if.pass.cpp                   | 3 ++-
 .../alg.remove/remove_if.pass.cpp                        | 1 +
 .../alg.replace/ranges_replace_copy.pass.cpp             | 1 +
 .../alg.replace/ranges_replace_copy_if.pass.cpp          | 1 +
 .../alg.replace/replace.pass.cpp                         | 1 +
 .../alg.replace/replace_copy.pass.cpp                    | 1 +
 .../alg.replace/replace_copy_if.pass.cpp                 | 3 ++-
 .../alg.replace/replace_if.pass.cpp                      | 3 ++-
 .../alg.reverse/ranges.reverse.pass.cpp                  | 1 +
 .../alg.reverse/reverse_copy.pass.cpp                    | 1 +
 .../alg.rotate/rotate_copy.pass.cpp                      | 1 +
 .../alg.shift/ranges.shift_left.pass.cpp                 | 3 ++-
 .../alg.shift/shift_left.pass.cpp                        | 1 +
 .../alg.shift/shift_right.pass.cpp                       | 1 +
 .../alg.transform/binary_transform.pass.cpp              | 1 +
 .../alg.transform/pstl.transform.binary.pass.cpp         | 2 ++
 .../alg.transform/pstl.transform.unary.pass.cpp          | 1 +
 .../alg.transform/unary_transform.pass.cpp               | 1 +
 .../alg.unique/ranges_unique.pass.cpp                    | 1 +
 .../alg.unique/ranges_unique_copy.pass.cpp               | 1 +
 .../alg.modifying.operations/alg.unique/unique.pass.cpp  | 1 +
 .../alg.unique/unique_copy.pass.cpp                      | 1 +
 .../alg.unique/unique_copy_pred.pass.cpp                 | 1 +
 .../alg.unique/unique_pred.pass.cpp                      | 1 +
 .../alg.adjacent.find/adjacent_find.pass.cpp             | 1 +
 .../alg.adjacent.find/adjacent_find_pred.pass.cpp        | 3 ++-
 .../alg.nonmodifying/alg.all_of/all_of.pass.cpp          | 1 +
 .../alg.nonmodifying/alg.all_of/pstl.all_of.pass.cpp     | 1 +
 .../alg.nonmodifying/alg.any_of/any_of.pass.cpp          | 1 +
 .../alg.nonmodifying/alg.any_of/pstl.any_of.pass.cpp     | 1 +
 .../alg.contains/ranges.contains.pass.cpp                | 1 +
 .../alg.nonmodifying/alg.count/count_if.pass.cpp         | 3 ++-
 .../alg.nonmodifying/alg.count/pstl.count.pass.cpp       | 2 ++
 .../alg.nonmodifying/alg.count/pstl.count_if.pass.cpp    | 2 ++
 .../alg.ends_with/ranges.ends_with.pass.cpp              | 1 +
 .../algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp | 1 +
 .../alg.nonmodifying/alg.equal/equal_pred.pass.cpp       | 3 ++-
 .../alg.nonmodifying/alg.equal/pstl.equal.pass.cpp       | 1 +
 .../alg.nonmodifying/alg.equal/ranges.equal.pass.cpp     | 1 +
 .../alg.nonmodifying/alg.find.end/find_end.pass.cpp      | 1 +
 .../alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp | 1 +
 .../alg.find.end/ranges.find_end.pass.cpp                | 1 +
 .../alg.find.first.of/find_first_of.pass.cpp             | 1 +
 .../alg.find.first.of/find_first_of_pred.pass.cpp        | 3 ++-
 .../alg.find.first.of/ranges.find_first_of.pass.cpp      | 1 +
 .../alg.find.last/ranges.find_last.pass.cpp              | 1 +
 .../algorithms/alg.nonmodifying/alg.find/find.pass.cpp   | 2 ++
 .../alg.nonmodifying/alg.find/find_if.pass.cpp           | 3 ++-
 .../alg.nonmodifying/alg.find/find_if_not.pass.cpp       | 1 +
 .../alg.nonmodifying/alg.find/pstl.find.pass.cpp         | 1 +
 .../alg.nonmodifying/alg.find/pstl.find_if.pass.cpp      | 1 +
 .../alg.nonmodifying/alg.find/pstl.find_if_not.pass.cpp  | 1 +
 .../alg.nonmodifying/alg.find/ranges.find.pass.cpp       | 2 ++
 .../alg.fold/requirements.compile.pass.cpp               | 1 +
 .../alg.nonmodifying/alg.foreach/for_each.pass.cpp       | 1 +
 .../alg.nonmodifying/alg.foreach/pstl.for_each.pass.cpp  | 1 +
 .../alg.foreach/pstl.for_each_n.pass.cpp                 | 1 +
 .../alg.foreach/ranges.for_each.pass.cpp                 | 1 +
 .../alg.foreach/ranges.for_each_n.pass.cpp               | 1 +
 .../alg.is_permutation/is_permutation.pass.cpp           | 1 +
 .../alg.is_permutation/is_permutation_pred.pass.cpp      | 1 +
 .../alg.is_permutation/ranges.is_permutation.pass.cpp    | 1 +
 .../alg.nonmodifying/alg.none_of/none_of.pass.cpp        | 1 +
 .../alg.nonmodifying/alg.none_of/pstl.none_of.pass.cpp   | 1 +
 .../alg.nonmodifying/alg.search/ranges.search.pass.cpp   | 1 +
 .../alg.nonmodifying/alg.search/ranges.search_n.pass.cpp | 1 +
 .../alg.nonmodifying/alg.search/search.pass.cpp          | 1 +
 .../alg.nonmodifying/alg.search/search_n_pred.pass.cpp   | 1 +
 .../alg.nonmodifying/alg.search/search_pred.pass.cpp     | 1 +
 .../alg.starts_with/ranges.starts_with.pass.cpp          | 1 +
 .../equal.range/ranges_equal_range.pass.cpp              | 1 +
 .../alg.heap.operations/is.heap/is_heap.pass.cpp         | 1 +
 .../alg.heap.operations/is.heap/is_heap_comp.pass.cpp    | 1 +
 .../alg.heap.operations/is.heap/is_heap_until.pass.cpp   | 1 +
 .../is.heap/is_heap_until_comp.pass.cpp                  | 3 ++-
 .../alg.heap.operations/is.heap/ranges_is_heap.pass.cpp  | 1 +
 .../is.heap/ranges_is_heap_until.pass.cpp                | 1 +
 .../make.heap/ranges_make_heap.pass.cpp                  | 1 +
 .../pop.heap/ranges_pop_heap.pass.cpp                    | 1 +
 .../push.heap/ranges_push_heap.pass.cpp                  | 1 +
 .../sort.heap/ranges_sort_heap.pass.cpp                  | 2 ++
 .../alg.lex.comparison/lexicographical_compare.pass.cpp  | 2 ++
 .../lexicographical_compare_comp.pass.cpp                | 3 ++-
 .../alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp  | 1 +
 .../alg.sorting/alg.merge/ranges_merge.pass.cpp          | 1 +
 .../alg.sorting/alg.min.max/ranges.max.pass.cpp          | 1 +
 .../alg.sorting/alg.min.max/ranges.min.pass.cpp          | 1 +
 .../alg.min.max/requires_forward_iterator.verify.cpp     | 1 +
 .../alg.nth.element/ranges_nth_element.pass.cpp          | 1 +
 .../alg.set.operations/includes/ranges_includes.pass.cpp | 1 +
 .../set.difference/ranges_set_difference.pass.cpp        | 1 +
 .../set.intersection/ranges_set_intersection.pass.cpp    | 1 +
 .../set_intersection_complexity.pass.cpp                 | 1 +
 .../ranges_set_symmetric_difference.pass.cpp             | 1 +
 .../set.union/ranges_set_union.pass.cpp                  | 1 +
 .../alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp    | 1 +
 .../alg.sort/is.sorted/is_sorted_comp.pass.cpp           | 1 +
 .../alg.sort/is.sorted/is_sorted_until.pass.cpp          | 1 +
 .../alg.sort/is.sorted/is_sorted_until_comp.pass.cpp     | 3 ++-
 .../alg.sort/is.sorted/pstl.is_sorted.pass.cpp           | 1 +
 .../alg.sort/is.sorted/pstl.is_sorted_comp.pass.cpp      | 1 +
 .../partial.sort.copy/ranges_partial_sort_copy.pass.cpp  | 1 +
 .../alg.sort/partial.sort/ranges_partial_sort.pass.cpp   | 1 +
 .../alg.sorting/alg.sort/sort/pstl.sort.pass.cpp         | 1 +
 .../alg.sorting/alg.sort/sort/ranges.sort.pass.cpp       | 1 +
 .../alg.sort/stable.sort/pstl.stable_sort.pass.cpp       | 6 ++++--
 .../alg.sort/stable.sort/ranges.stable.sort.pass.cpp     | 2 ++
 .../multiset/multiset.cons/iter_iter_alloc.pass.cpp      | 1 +
 .../multiset/multiset.cons/iter_iter_comp.pass.cpp       | 3 ++-
 .../associative/set/set.cons/iter_iter_alloc.pass.cpp    | 1 +
 .../associative/set/set.cons/iter_iter_comp.pass.cpp     | 3 ++-
 .../vector/vector.cons/construct_iter_iter.pass.cpp      | 1 +
 .../class.path/path.member/path.assign/source.pass.cpp   | 1 +
 .../iterator.operations/distance.pass.cpp                | 1 +
 .../cxx20_iterator_traits.compile.pass.cpp               | 1 +
 .../range.iter.ops.distance/iterator_sentinel.pass.cpp   | 1 +
 .../range.iter.ops.distance/lwg3664.pass.cpp             | 4 +++-
 .../range.iter.ops/range.iter.ops.prev/iterator.pass.cpp | 1 +
 .../projected/projected.compile.pass.cpp                 | 1 +
 .../bidirectional_iterator.compile.pass.cpp              | 1 +
 .../forward_iterator.compile.pass.cpp                    | 1 +
 .../input_iterator.compile.pass.cpp                      | 1 +
 .../input_or_output_iterator.compile.pass.cpp            | 1 +
 .../random_access_iterator.compile.pass.cpp              | 1 +
 .../iterator.cust/iterator.cust.swap/iter_swap.pass.cpp  | 2 ++
 .../predef.iterators/counted.iterator/arrow.pass.cpp     | 1 +
 .../predef.iterators/counted.iterator/assign.pass.cpp    | 2 ++
 .../predef.iterators/counted.iterator/base.pass.cpp      | 2 ++
 .../predef.iterators/counted.iterator/compare.pass.cpp   | 2 ++
 .../predef.iterators/counted.iterator/count.pass.cpp     | 1 +
 .../predef.iterators/counted.iterator/ctor.conv.pass.cpp | 2 ++
 .../counted.iterator/ctor.default.pass.cpp               | 1 +
 .../predef.iterators/counted.iterator/ctor.iter.pass.cpp | 1 +
 .../predef.iterators/counted.iterator/decrement.pass.cpp | 1 +
 .../predef.iterators/counted.iterator/deref.pass.cpp     | 1 +
 .../predef.iterators/counted.iterator/increment.pass.cpp | 1 +
 .../predef.iterators/counted.iterator/iter_move.pass.cpp | 2 ++
 .../predef.iterators/counted.iterator/iter_swap.pass.cpp | 2 ++
 .../counted.iterator/iterator_traits.compile.pass.cpp    | 1 +
 .../counted.iterator/member_types.compile.pass.cpp       | 1 +
 .../counted.iterator/minus.default_sentinel.pass.cpp     | 1 +
 .../predef.iterators/counted.iterator/minus.eq.pass.cpp  | 1 +
 .../counted.iterator/minus.iter.pass.cpp                 | 1 +
 .../counted.iterator/minus.size.pass.cpp                 | 1 +
 .../predef.iterators/counted.iterator/plus.pass.cpp      | 2 ++
 .../predef.iterators/counted.iterator/subscript.pass.cpp | 1 +
 .../counted.iterator/three_way_compare.pass.cpp          | 1 +
 .../iterators.common/ctor.default.pass.cpp               | 3 ++-
 .../predef.iterators/iterators.common/ctor.iter.pass.cpp | 1 +
 .../iterators.common/ctor.sentinel.pass.cpp              | 1 +
 .../iterators/predef.iterators/iterators.common/types.h  | 2 ++
 .../move.iter.ops/move.iter.nonmember/iter_move.pass.cpp | 2 ++
 .../move.iter.ops/move.iter.nonmember/iter_swap.pass.cpp | 2 ++
 .../move.iter.ops/move.iter.op.const/iter.pass.cpp       | 1 +
 .../move.iter.ops/move.iter.op.conv/base.pass.cpp        | 5 ++++-
 .../move.iterators/move.iterator/types.pass.cpp          | 1 +
 .../move.iterators/sized_sentinel.compile.pass.cpp       | 1 +
 .../reverse.iter.nonmember/iter_move.pass.cpp            | 2 ++
 .../reverse.iter.nonmember/iter_swap.pass.cpp            | 2 ++
 .../facet.num.put.members/put_pointer.pass.cpp           | 1 +
 .../facet.num.get.members/test_neg_one.pass.cpp          | 1 +
 .../numeric.ops/numeric.iota/ranges.iota.pass.cpp        | 1 +
 .../std/numerics/numeric.ops/reduce/pstl.reduce.pass.cpp | 3 +++
 .../test/std/numerics/numeric.ops/reduce/reduce.pass.cpp | 2 ++
 .../std/numerics/numeric.ops/reduce/reduce_init.pass.cpp | 3 ++-
 .../numerics/numeric.ops/reduce/reduce_init_op.pass.cpp  | 2 ++
 .../pstl.transform_reduce.binary.pass.cpp                | 1 +
 .../pstl.transform_reduce.unary.pass.cpp                 | 3 ++-
 libcxx/test/std/ranges/range.access/size.pass.cpp        | 2 ++
 libcxx/test/std/ranges/range.access/ssize.pass.cpp       | 2 ++
 .../range.adaptor.object/range_adaptor_closure.pass.cpp  | 1 +
 .../iterator/ctor.other.pass.cpp                         | 1 +
 .../iterator/member_types.compile.pass.cpp               | 1 +
 .../sentinel/ctor.other.pass.cpp                         | 1 +
 .../range.adjacent.transform/sentinel/eq.pass.cpp        | 1 +
 .../range.adjacent.transform/sentinel/minus.pass.cpp     | 1 +
 .../range.adjacent.transform/size.pass.cpp               | 1 +
 .../range.adaptors/range.adjacent/adaptor.pass.cpp       | 1 +
 .../range.adaptors/range.adjacent/ctor.views.pass.cpp    | 1 +
 .../range.adjacent/iterator/arithmetic.pass.cpp          | 1 +
 .../range.adjacent/iterator/compare.pass.cpp             | 1 +
 .../range.adjacent/iterator/ctor.default.pass.cpp        | 1 +
 .../range.adjacent/iterator/ctor.other.pass.cpp          | 1 +
 .../iterator/member_types.compile.pass.cpp               | 1 +
 .../range.adjacent/iterator/singular.pass.cpp            | 1 +
 .../range.adjacent/sentinel/ctor.other.pass.cpp          | 1 +
 .../range.adaptors/range.adjacent/sentinel/eq.pass.cpp   | 1 +
 .../range.adjacent/sentinel/minus.pass.cpp               | 1 +
 .../ranges/range.adaptors/range.adjacent/size.pass.cpp   | 2 ++
 .../range.adaptors/range.all/all_t.compile.pass.cpp      | 1 +
 .../range.all/range.owning.view/begin_end.pass.cpp       | 1 +
 .../range.all/range.owning.view/data.pass.cpp            | 1 +
 .../range.all/range.owning.view/empty.pass.cpp           | 1 +
 .../range.all/range.owning.view/size.pass.cpp            | 1 +
 .../ranges/range.adaptors/range.as.rvalue/begin.pass.cpp | 1 +
 .../ranges/range.adaptors/range.as.rvalue/end.pass.cpp   | 1 +
 .../ranges/range.adaptors/range.chunk.by/begin.pass.cpp  | 1 +
 .../ranges/range.adaptors/range.chunk.by/end.pass.cpp    | 1 +
 .../range.chunk.by/range.chunk.by.iter/compare.pass.cpp  | 1 +
 .../range.chunk.by.iter/types.compile.pass.cpp           | 1 +
 .../std/ranges/range.adaptors/range.drop/base.pass.cpp   | 1 +
 .../std/ranges/range.adaptors/range.drop/begin.pass.cpp  | 2 ++
 .../range.adaptors/range.drop/ctor.default.pass.cpp      | 1 +
 .../ranges/range.adaptors/range.drop/ctor.view.pass.cpp  | 1 +
 .../range.adaptors/range.drop/dangling.cache.pass.cpp    | 1 +
 .../std/ranges/range.adaptors/range.drop/end.pass.cpp    | 1 +
 .../std/ranges/range.adaptors/range.drop/size.pass.cpp   | 1 +
 .../range.elements/iterator/arithmetic.pass.cpp          | 1 +
 .../range.elements/iterator/compare.pass.cpp             | 1 +
 .../range.elements/iterator/ctor.default.pass.cpp        | 1 +
 .../range.elements/sentinel/equality.pass.cpp            | 1 +
 .../range.elements/sentinel/minus.pass.cpp               | 1 +
 .../std/ranges/range.adaptors/range.elements/types.h     | 1 +
 .../ranges/range.adaptors/range.filter/begin.pass.cpp    | 2 ++
 .../std/ranges/range.adaptors/range.filter/end.pass.cpp  | 2 ++
 .../range.join.with.overview/adaptor.pass.cpp            | 1 +
 .../range.join.with/range.join.with.view/end.pass.cpp    | 1 +
 .../std/ranges/range.adaptors/range.join/begin.pass.cpp  | 1 +
 .../std/ranges/range.adaptors/range.join/end.pass.cpp    | 1 +
 .../range.join/range.join.iterator/ctor.other.pass.cpp   | 1 +
 .../range.join/range.join.iterator/eq.pass.cpp           | 1 +
 .../range.join/range.join.sentinel/ctor.other.pass.cpp   | 1 +
 .../range.join/range.join.sentinel/eq.pass.cpp           | 1 +
 .../range.lazy.split.inner/base.pass.cpp                 | 1 +
 .../range.lazy.split.inner/deref.pass.cpp                | 1 +
 .../range.lazy.split.inner/equal.pass.cpp                | 1 +
 .../range.lazy.split.outer/equal.pass.cpp                | 1 +
 .../test/std/ranges/range.adaptors/range.split/types.h   | 1 +
 .../range.take.while/sentinel/equality.pass.cpp          | 2 ++
 .../range.take/range.take.sentinel/base.pass.cpp         | 1 +
 .../range.take/range.take.sentinel/ctor.pass.cpp         | 3 ++-
 .../ranges/range.adaptors/range.transform/base.pass.cpp  | 1 +
 .../ranges/range.adaptors/range.transform/begin.pass.cpp | 1 +
 .../ranges/range.adaptors/range.transform/end.pass.cpp   | 2 ++
 .../range.transform/iterator/arithmetic.pass.cpp         | 1 +
 .../range.transform/iterator/base.pass.cpp               | 1 +
 .../range.transform/iterator/compare.pass.cpp            | 1 +
 .../range.transform/iterator/deref.pass.cpp              | 1 +
 .../range.transform/iterator/plus_minus.pass.cpp         | 1 +
 .../range.transform/iterator/sentinel.pass.cpp           | 1 +
 .../range.transform/iterator/subscript.pass.cpp          | 1 +
 .../ranges/range.adaptors/range.transform/size.pass.cpp  | 1 +
 .../range.adaptors/range.zip.transform/begin.pass.cpp    | 1 +
 .../range.zip.transform/ctor.default.pass.cpp            | 1 +
 .../range.zip.transform/ctor.views.pass.cpp              | 1 +
 .../range.adaptors/range.zip.transform/end.pass.cpp      | 2 ++
 .../range.zip.transform/iterator/arithmetic.pass.cpp     | 1 +
 .../range.zip.transform/iterator/compare.pass.cpp        | 1 +
 .../range.zip.transform/iterator/ctor.default.pass.cpp   | 1 +
 .../range.zip.transform/iterator/ctor.other.pass.cpp     | 1 +
 .../range.zip.transform/sentinel/ctor.other.pass.cpp     | 1 +
 .../range.zip.transform/sentinel/eq.pass.cpp             | 1 +
 .../range.zip.transform/sentinel/minus.pass.cpp          | 1 +
 .../range.adaptors/range.zip.transform/size.pass.cpp     | 1 +
 .../ranges/range.adaptors/range.zip/ctor.views.pass.cpp  | 1 +
 .../std/ranges/range.adaptors/range.zip/end.pass.cpp     | 2 ++
 .../range.zip/iterator/arithmetic.pass.cpp               | 1 +
 .../range.adaptors/range.zip/iterator/compare.pass.cpp   | 3 ++-
 .../range.zip/iterator/ctor.default.pass.cpp             | 1 +
 .../range.zip/iterator/ctor.other.pass.cpp               | 1 +
 .../range.adaptors/range.zip/iterator/deref.pass.cpp     | 1 +
 .../range.zip/iterator/member_types.compile.pass.cpp     | 1 +
 .../range.adaptors/range.zip/iterator/singular.pass.cpp  | 1 +
 .../range.zip/sentinel/ctor.other.pass.cpp               | 1 +
 .../ranges/range.adaptors/range.zip/sentinel/eq.pass.cpp | 1 +
 .../range.adaptors/range.zip/sentinel/minus.pass.cpp     | 1 +
 .../test/std/ranges/range.adaptors/range_adaptor_types.h | 1 +
 .../range.iota.view/iterator/compare.pass.cpp            | 1 +
 .../ranges/range.utility/range.elementsof/ctad.pass.cpp  | 1 +
 .../range.utility/range.elementsof/elements_of.pass.cpp  | 1 +
 .../range.utility/view.interface/view.interface.pass.cpp | 2 ++
 .../string.cons/from_range_deduction.pass.cpp            | 1 +
 .../string.modifiers/string_append/iterator.pass.cpp     | 1 +
 .../string.modifiers/string_assign/iterator.pass.cpp     | 7 ++++---
 .../string_insert/iter_iter_iter.pass.cpp                | 9 +++++----
 .../string_replace/iter_iter_iter_iter.pass.cpp          | 1 +
 .../string.view.cons/from_iterator_sentinel.pass.cpp     | 1 +
 .../func.search/func.search.bm/hash.pass.cpp             | 1 +
 .../func.search/func.search.bm/hash.pred.pass.cpp        | 1 +
 .../func.search/func.search.bm/pred.pass.cpp             | 1 +
 .../func.search/func.search.bmh/hash.pass.cpp            | 1 +
 .../func.search/func.search.bmh/hash.pred.pass.cpp       | 1 +
 .../func.search/func.search.bmh/pred.pass.cpp            | 3 ++-
 .../ranges_uninitialized_default_construct_n.pass.cpp    | 1 +
 .../uninitialized_default_construct_n.pass.cpp           | 1 +
 .../ranges_uninitialized_value_construct_n.pass.cpp      | 1 +
 libcxx/test/support/module.modulemap                     | 1 +
 libcxx/test/support/test.support/test_proxy.pass.cpp     | 2 ++
 libcxx/test/support/test_range.h                         | 1 +
 332 files changed, 415 insertions(+), 35 deletions(-)

diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in
index b622680a4920b..eda48887bed0b 100644
--- a/libcxx/include/module.modulemap.in
+++ b/libcxx/include/module.modulemap.in
@@ -469,6 +469,7 @@ module std [system] {
     module mismatch {
       header "__algorithm/mismatch.h"
       export std.utility.pair // return type
+      export std.iterator.aliasing_iterator
     }
     module move_backward                          { header "__algorithm/move_backward.h" }
     module move                                   { header "__algorithm/move.h" }
diff --git a/libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h b/libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h
index 6e83e6b0c94e2..00ec1ded7dc44 100644
--- a/libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h
+++ b/libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h
@@ -21,6 +21,7 @@
 
 #include "benchmark/benchmark.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 #include "../../GenerateInput.h"
 
 namespace support {
diff --git a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_forward_iterator.compile.pass.cpp b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_forward_iterator.compile.pass.cpp
index 9c488c255465f..8326e4d3bdd86 100644
--- a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_forward_iterator.compile.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_forward_iterator.compile.pass.cpp
@@ -11,6 +11,7 @@
 // template<class I>
 // concept __nothrow_forward_iterator;
 
+#include <iterator>
 #include <memory>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
index 2da3f4297af70..6deb841616b97 100644
--- a/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_input_iterator.compile.pass.cpp
@@ -11,6 +11,7 @@
 // template<class I>
 // concept __nothrow_input_iterator;
 
+#include <iterator>
 #include <memory>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp b/libcxx/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
index e095d7598f189..950f895e32343 100644
--- a/libcxx/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
+++ b/libcxx/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
@@ -22,6 +22,7 @@
 #include <filesystem>
 #include <type_traits>
 #include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/libcxx/iterators/bounded_iter/arithmetic.pass.cpp b/libcxx/test/libcxx/iterators/bounded_iter/arithmetic.pass.cpp
index 45d0cc3b95f90..88acc30369165 100644
--- a/libcxx/test/libcxx/iterators/bounded_iter/arithmetic.pass.cpp
+++ b/libcxx/test/libcxx/iterators/bounded_iter/arithmetic.pass.cpp
@@ -12,6 +12,7 @@
 // Arithmetic operators
 
 #include <__iterator/bounded_iter.h>
+#include <cassert>
 #include <cstddef>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/libcxx/iterators/bounded_iter/comparison.pass.cpp b/libcxx/test/libcxx/iterators/bounded_iter/comparison.pass.cpp
index cef2157469c8f..31c080c63a31d 100644
--- a/libcxx/test/libcxx/iterators/bounded_iter/comparison.pass.cpp
+++ b/libcxx/test/libcxx/iterators/bounded_iter/comparison.pass.cpp
@@ -11,6 +11,8 @@
 //
 // Comparison operators
 
+#include <cassert>
+#include <compare>
 #include <concepts>
 #include <__iterator/bounded_iter.h>
 
diff --git a/libcxx/test/libcxx/iterators/capacity_aware_iter/arithmetic.pass.cpp b/libcxx/test/libcxx/iterators/capacity_aware_iter/arithmetic.pass.cpp
index c8451141c9844..f4aa5c29790ff 100644
--- a/libcxx/test/libcxx/iterators/capacity_aware_iter/arithmetic.pass.cpp
+++ b/libcxx/test/libcxx/iterators/capacity_aware_iter/arithmetic.pass.cpp
@@ -25,6 +25,7 @@
 // operator-(__capacity_aware_iterator, __capacity_aware_iterator)
 
 #include <__iterator/capacity_aware_iterator.h>
+#include <cassert>
 #include <concepts>
 #include <cstddef>
 #include <iterator>
diff --git a/libcxx/test/libcxx/iterators/capacity_aware_iter/comparison.pass.cpp b/libcxx/test/libcxx/iterators/capacity_aware_iter/comparison.pass.cpp
index d1f396fb93777..34aa73bf4459c 100644
--- a/libcxx/test/libcxx/iterators/capacity_aware_iter/comparison.pass.cpp
+++ b/libcxx/test/libcxx/iterators/capacity_aware_iter/comparison.pass.cpp
@@ -22,6 +22,7 @@
 // operator<=>
 
 #include <__iterator/capacity_aware_iterator.h>
+#include <cassert>
 #include <compare>
 #include <concepts>
 #include <iterator>
diff --git a/libcxx/test/libcxx/iterators/capacity_aware_iter/dereference.pass.cpp b/libcxx/test/libcxx/iterators/capacity_aware_iter/dereference.pass.cpp
index ff7d4b53b071a..42ab763896e2f 100644
--- a/libcxx/test/libcxx/iterators/capacity_aware_iter/dereference.pass.cpp
+++ b/libcxx/test/libcxx/iterators/capacity_aware_iter/dereference.pass.cpp
@@ -18,7 +18,9 @@
 // operator->();
 
 #include <__iterator/capacity_aware_iterator.h>
+#include <cassert>
 #include <concepts>
+#include <iterator>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/libcxx/iterators/iterator.requirements/iterator.concepts/cpp20_iter_traits.compile.pass.cpp b/libcxx/test/libcxx/iterators/iterator.requirements/iterator.concepts/cpp20_iter_traits.compile.pass.cpp
index 066587d68cd3b..ff2e1a5579bac 100644
--- a/libcxx/test/libcxx/iterators/iterator.requirements/iterator.concepts/cpp20_iter_traits.compile.pass.cpp
+++ b/libcxx/test/libcxx/iterators/iterator.requirements/iterator.concepts/cpp20_iter_traits.compile.pass.cpp
@@ -15,6 +15,7 @@
 // ITER_TRAITS(I) denotes iterator_traits<I>.
 
 #include <__iterator/concepts.h>
+#include <iterator>
 #include <type_traits>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/libcxx/iterators/iterator_with_data.pass.cpp b/libcxx/test/libcxx/iterators/iterator_with_data.pass.cpp
index b2e3ffe0be90e..6986302de1822 100644
--- a/libcxx/test/libcxx/iterators/iterator_with_data.pass.cpp
+++ b/libcxx/test/libcxx/iterators/iterator_with_data.pass.cpp
@@ -15,6 +15,10 @@ TEST_CLANG_DIAGNOSTIC_IGNORED("-Wprivate-header")
 #include <__iterator/iterator_with_data.h>
 TEST_DIAGNOSTIC_POP
 
+#include <cassert>
+#include <iterator>
+#include <utility>
+
 #include "test_iterators.h"
 
 static_assert(std::forward_iterator<std::__iterator_with_data<forward_iterator<int*>, int>>);
diff --git a/libcxx/test/libcxx/iterators/product_iterator.pass.cpp b/libcxx/test/libcxx/iterators/product_iterator.pass.cpp
index 604f3667c36e3..d70bbca15ca6c 100644
--- a/libcxx/test/libcxx/iterators/product_iterator.pass.cpp
+++ b/libcxx/test/libcxx/iterators/product_iterator.pass.cpp
@@ -10,6 +10,7 @@
 // gcc 15 does not seem to recognize the __product_iterator_traits specializations
 // UNSUPPORTED: gcc
 
+#include <cassert>
 #include <flat_map>
 #include <ranges>
 #include <type_traits>
diff --git a/libcxx/test/libcxx/iterators/unwrap_iter.pass.cpp b/libcxx/test/libcxx/iterators/unwrap_iter.pass.cpp
index 8ef2be2b01074..3902eb350bca9 100644
--- a/libcxx/test/libcxx/iterators/unwrap_iter.pass.cpp
+++ b/libcxx/test/libcxx/iterators/unwrap_iter.pass.cpp
@@ -12,6 +12,7 @@
 #include <cassert>
 #include <string>
 #include <type_traits>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
index bede567f33019..6ef693ec42534 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <vector>
 
 #include "sized_allocator.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
index b921591c19621..f535ede394781 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <vector>
 
 #include "sized_allocator.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
index 2053134a01a2f..183f38c1ce117 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <vector>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp
index 0e0fbf39602de..ab76388ca957c 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp
@@ -20,6 +20,7 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp
index 46beea04aa2f3..c76efdd3f5748 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp
@@ -23,6 +23,7 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.pass.cpp
index 577328d663d9f..132993dba76b9 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.pass.cpp
@@ -24,6 +24,7 @@
 #include "almost_satisfies_types.h"
 #include "test_macros.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 template <class In, class Out = In, class Count = std::size_t>
 concept HasCopyNIt = requires(In in, Count count, Out out) { std::ranges::copy_n(in, count, out); };
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
index b0a74b81f8c0f..10aad31778ea9 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
@@ -17,6 +17,7 @@
 #include <array>
 #include <cassert>
 #include <cstddef>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
index 5dc9b901db075..6d7ba98a33b65 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
@@ -17,6 +17,7 @@
 #include <array>
 #include <cassert>
 #include <cstddef>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill.pass.cpp
index 7ae0a0665dfbb..79543832d6e20 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill.pass.cpp
@@ -18,6 +18,7 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <string>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill_n.pass.cpp
index 25db892548a6a..0de6f4a625136 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/ranges.fill_n.pass.cpp
@@ -16,6 +16,7 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <string>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate.pass.cpp
index 56fbe58e2dfd0..98741873760d7 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate.pass.cpp
@@ -20,6 +20,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate_n.pass.cpp
index e6af0116ea0d2..33d40a39cf385 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/ranges_generate_n.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
index e28484ee4984b..1c82dd6d4fe70 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
@@ -18,6 +18,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <iterator>
 #include <memory>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
index d8b7e68b155d6..5d4ba6e1ec3e3 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <iterator>
 #include <memory>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/pstl.move.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/pstl.move.pass.cpp
index a82a068caf031..26c537f42efc2 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/pstl.move.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/pstl.move.pass.cpp
@@ -18,6 +18,7 @@
 //                         ForwardIterator2 result);
 
 #include <algorithm>
+#include <cassert>
 #include <vector>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
index f5a0ff0b27dad..73a4895abc942 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
@@ -13,9 +13,10 @@
 //     is_partitioned(InputIterator first, InputIterator last, Predicate pred);
 
 #include <algorithm>
-#include <functional>
-#include <cstddef>
 #include <cassert>
+#include <cstddef>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
index 05ab77907ea06..1867c3ae46246 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
index 2dc17868f80ee..c16aa6f10e5c6 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition.pass.cpp
index 6d9be0441bfef..07ee0f29d4009 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_copy.pass.cpp
index af9a72da71a99..19fe28febe797 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_copy.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_point.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_point.pass.cpp
index 932e833aa499d..19ecdc02b777b 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_point.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_partition_point.pass.cpp
@@ -21,6 +21,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_stable_partition.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_stable_partition.pass.cpp
index 615cac8c67239..28fda6b56446c 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_stable_partition.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/ranges_stable_partition.pass.cpp
@@ -24,12 +24,14 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct UnaryPred { bool operator()(int) const; };
 
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/ranges_sample.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/ranges_sample.pass.cpp
index a5178cb2eee13..0da76d5389d20 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/ranges_sample.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/ranges_sample.pass.cpp
@@ -24,6 +24,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <random>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
index ed89a5ad47115..09322dad3d6f1 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.sample/sample.pass.cpp
@@ -17,10 +17,12 @@
 //                       UniformRandomNumberGenerator &&g);
 
 #include <algorithm>
-#include <random>
-#include <type_traits>
 #include <cassert>
 #include <cstddef>
+#include <iterator>
+#include <random>
+#include <type_traits>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp
index 24237b94502f9..9db7bc62ecf3d 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp
@@ -22,6 +22,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <random>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy.pass.cpp
index 9c09b443ef12c..29508988cd266 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy.pass.cpp
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy_if.pass.cpp
index c67f7c92e3cef..9636ddb1e07e7 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/ranges_remove_copy_if.pass.cpp
@@ -24,6 +24,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
index ebacec5f49367..deff5d626046f 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 #include <memory>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
index 1a0313d0b2b39..2647df673702c 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
index d2ad3f2d2d5df..90be6f9c5c6d4 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
@@ -15,8 +15,9 @@
 //   remove_copy_if(InIter first, InIter last, OutIter result, Pred pred);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
index 99f9adfd319ea..40efd0cbff167 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
@@ -18,6 +18,7 @@
 #include <functional>
 #include <cassert>
 #include <memory>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy.pass.cpp
index b1c03e9604a6a..278fb04d95f60 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy.pass.cpp
@@ -27,6 +27,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy_if.pass.cpp
index 38f6d4789b951..fe2bea49fdbd2 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/ranges_replace_copy_if.pass.cpp
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
index 1e91fc968cb21..31c398e6321e4 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
index 00f869889a422..471a1c98354f6 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
@@ -18,6 +18,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
index 795181bbbd18d..12c4a8980cc77 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
@@ -17,8 +17,9 @@
 //   replace_copy_if(InIter first, InIter last, OutIter result, Pred pred, const T& new_value);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
index 4f32b6e94a413..57ccc8d54a13a 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
@@ -16,8 +16,9 @@
 //   replace_if(Iter first, Iter last, Pred pred, const T& new_value);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/ranges.reverse.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/ranges.reverse.pass.cpp
index c1011f3ada649..46d6345aeede9 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/ranges.reverse.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/ranges.reverse.pass.cpp
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <ranges>
 
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
index 150ade52de896..d1184b6320e84 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
index 8e356cc219fe7..976b0e69a9833 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/ranges.shift_left.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/ranges.shift_left.pass.cpp
index 9639fc529c2a0..51a2e448e42de 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/ranges.shift_left.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/ranges.shift_left.pass.cpp
@@ -26,8 +26,9 @@
 #include <vector>
 
 #include "almost_satisfies_types.h"
-#include "test_iterators.h"
 #include "MoveOnly.h"
+#include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct InvalidDifferenceT {};
 
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_left.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_left.pass.cpp
index 90540f499e156..5e058b853cd22 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_left.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_left.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_right.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_right.pass.cpp
index d92387c4c77ae..c3c30cca0318f 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_right.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.shift/shift_right.pass.cpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
index 7ad94e3331bf1..b05206c77b59d 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.binary.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.binary.pass.cpp
index b2b98619fb964..bbad9ae357a7a 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.binary.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.binary.pass.cpp
@@ -21,11 +21,13 @@
 //               BinaryOperation binary_op);
 
 #include <algorithm>
+#include <cassert>
 #include <vector>
 
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(transform);
 
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.unary.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.unary.pass.cpp
index 03985c7d3673b..a63a114b32308 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.unary.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/pstl.transform.unary.pass.cpp
@@ -26,6 +26,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 // We can't test the constraint on the execution policy, because that would conflict with the binary
 // transform algorithm that doesn't take an execution policy, which is not constrained at all.
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
index 8cf9667f757f6..124009479c8bb 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp
index 67a8462c76650..afa350a765ecd 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp
@@ -22,6 +22,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique_copy.pass.cpp
index a4cf97069c96a..7a9d2f0a2e577 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique_copy.pass.cpp
@@ -30,6 +30,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
index b145d567f47bf..d763000bbecfd 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <cassert>
 #include <memory>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
index bcf9c99e24c25..51236a0dc5e96 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
@@ -18,6 +18,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "MoveOnly.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
index e7d76a3343766..306a40f538bb2 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
index 91535f081ca8b..97e0606da98e5 100644
--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <cassert>
 #include <memory>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
index 6d57c5869ab70..06f4c90d1fe61 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
index c80bc9fff83b6..e107d65fd9853 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
@@ -14,8 +14,9 @@
 //   adjacent_find(Iter first, Iter last, Pred pred);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
index 255cd62fd05d9..f9377fb10277f 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/pstl.all_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/pstl.all_of.pass.cpp
index a3af9b949bfd2..1770749fbcc4b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/pstl.all_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/pstl.all_of.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(all_of);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
index 79f4438aa9abe..c0b659304db8b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/pstl.any_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/pstl.any_of.pass.cpp
index 229bf576dd801..5ddbfa9b98c37 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/pstl.any_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/pstl.any_of.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(any_of);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains.pass.cpp
index 1e89cd272e643..e5da5d68a4db4 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains.pass.cpp
@@ -29,6 +29,7 @@
 #include "almost_satisfies_types.h"
 #include "boolean_testable.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct NotEqualityComparable {};
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
index 176d6b22551fb..64c3d7ce3ac86 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
@@ -14,8 +14,9 @@
 //   count_if(Iter first, Iter last, Pred pred);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count.pass.cpp
index f00861f66bfe9..3b7d0816c2bea 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count.pass.cpp
@@ -20,11 +20,13 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <iterator>
 #include <vector>
 
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(count);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count_if.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count_if.pass.cpp
index 489c7a7332a6e..2808670b55d86 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/pstl.count_if.pass.cpp
@@ -20,11 +20,13 @@
 #include <algorithm>
 #include <array>
 #include <cassert>
+#include <iterator>
 #include <vector>
 
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(count_if);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp
index 76c62ffa760ad..9a7a5f551a784 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <chrono>
 #include <ranges>
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
index a041e38a4838a..48c91bc664e0c 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
@@ -30,6 +30,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <cstdint>
 #include <functional>
 #include <vector>
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
index 8752b92d6dfa9..c487fc7e7f163 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
@@ -23,8 +23,9 @@
 
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/pstl.equal.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/pstl.equal.pass.cpp
index e2f4dafe1a05d..4be9b166045c1 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/pstl.equal.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/pstl.equal.pass.cpp
@@ -42,6 +42,7 @@
 #include "test_execution_policies.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class It1, class It2>
 struct Test {
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp
index 8f35a3cf34589..81723e1a25773 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp
@@ -26,6 +26,7 @@
 #include <array>
 #include <cassert>
 #include <concepts>
+#include <cstdint>
 #include <functional>
 #include <ranges>
 #include <vector>
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
index 3060528a8e899..e64947bc4f806 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
index 7358cf5f70106..4f84def8fea7e 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/ranges.find_end.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/ranges.find_end.pass.cpp
index deaec0b6ebb62..ce5226c563f14 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/ranges.find_end.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/ranges.find_end.pass.cpp
@@ -25,6 +25,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
index 6a76ef95353a8..efa54bbc8fd66 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
index 0e9a6e576b85c..fd2e4d426fbf9 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
@@ -15,8 +15,9 @@
 //   find_first_of(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, Pred pred);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/ranges.find_first_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/ranges.find_first_of.pass.cpp
index a74e6d721f773..4a374947dc449 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/ranges.find_first_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/ranges.find_first_of.pass.cpp
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <functional>
 #include <ranges>
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.last/ranges.find_last.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.last/ranges.find_last.pass.cpp
index 9da8c26db0f56..dde7bd923e8f1 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.last/ranges.find_last.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find.last/ranges.find_last.pass.cpp
@@ -31,6 +31,7 @@
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct NotEqualityComparable {};
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
index e9fd8c17b40cb..a347778092d2b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
@@ -28,7 +28,9 @@
 #include <algorithm>
 #include <cassert>
 #include <cstddef>
+#include <cstdint>
 #include <deque>
+#include <ranges>
 #include <vector>
 #include <type_traits>
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
index 7fb168a061352..8af4c2e0f2189 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
@@ -12,8 +12,9 @@
 //   constexpr InputIterator find_if(InputIterator first, InputIterator last, Predicate pred); // constexpr since C++20
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
index 4b5d3540512d7..a083cb56df6ea 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
@@ -15,6 +15,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find.pass.cpp
index 8a9eee81d95c0..9d43b1aa22cec 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(find);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if.pass.cpp
index 49eef2a7bc55f..e12acf1d28379 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(find_if);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if_not.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if_not.pass.cpp
index e5a242c57a2c4..c67490dc402f6 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if_not.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/pstl.find_if_not.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(find_if_not);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp
index 3303b4a76f467..08a3a4658fa6b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp
@@ -29,6 +29,7 @@
 #include <array>
 #include <cassert>
 #include <cstddef>
+#include <cstdint>
 #include <deque>
 #include <ranges>
 #include <vector>
@@ -36,6 +37,7 @@
 #include "almost_satisfies_types.h"
 #include "sized_allocator.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct NotEqualityComparable {};
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/requirements.compile.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/requirements.compile.pass.cpp
index 261dd6e572e50..8673a09394b95 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/requirements.compile.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/requirements.compile.pass.cpp
@@ -32,6 +32,7 @@
 #include <functional>
 #include <iterator>
 #include <ranges>
+#include <type_traits>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp
index 3c0ff75fc56c7..6506e4c5b3173 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp
@@ -20,6 +20,7 @@
 
 #include "test_macros.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct for_each_test {
   TEST_CONSTEXPR for_each_test(int c) : count(c) {}
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each.pass.cpp
index b0e77094f0a42..97b0220309720 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each.pass.cpp
@@ -25,6 +25,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include <type_algorithms.h>
 
 EXECUTION_POLICY_SFINAE_TEST(for_each);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each_n.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each_n.pass.cpp
index c00eed1ead564..8769d1b4db554 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/pstl.for_each_n.pass.cpp
@@ -24,6 +24,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(for_each_n);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each.pass.cpp
index a6d0afde3186a..86c5a8a39736f 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each.pass.cpp
@@ -27,6 +27,7 @@
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct Callable {
   void operator()(int);
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each_n.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each_n.pass.cpp
index 1578763694231..a82fb6afaad0b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/ranges.for_each_n.pass.cpp
@@ -26,6 +26,7 @@
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct Callable {
   void operator()(int);
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
index 2a2c796caac01..2863219e60eac 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
index 4e4f889a45e74..d2a3ec6287a29 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
@@ -16,6 +16,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/ranges.is_permutation.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/ranges.is_permutation.pass.cpp
index 2d560b165758c..e04c78e516c00 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/ranges.is_permutation.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/ranges.is_permutation.pass.cpp
@@ -27,6 +27,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <list>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
index 00c1b8954ad3b..8d63ecb6c17a5 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/pstl.none_of.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/pstl.none_of.pass.cpp
index fb3e34a2bdec3..b20b99c1e836b 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/pstl.none_of.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/pstl.none_of.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_macros.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(none_of);
 
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search.pass.cpp
index 8a706071f5130..9ab7abdd9548d 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search.pass.cpp
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search_n.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search_n.pass.cpp
index f68c31ead7b8f..6686e8de733bd 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search_n.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/ranges.search_n.pass.cpp
@@ -25,6 +25,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
index 3bf2fd9d6bb04..2e1aa06167e84 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp
index 2fa3e9ffac1bc..21683da150f48 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
index cfb82f3d4084c..2251a89a8f516 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp
index 172fa82fccc29..5346773fe06fb 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/ranges_equal_range.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/ranges_equal_range.pass.cpp
index 518526705409a..cc4c922d32dd4 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/ranges_equal_range.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/ranges_equal_range.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp
index 8ccff2ebb531a..cbef8544e153e 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp
index b07a3c8f24f60..63b1ba343f1f4 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp
@@ -16,6 +16,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp
index 9708db7ce5fd2..78465465e5eb4 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp
index 1cec5440f0068..15e481807eb6c 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp
@@ -14,8 +14,9 @@
 //   is_heap_until(Iter first, Iter last, Compare comp);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap.pass.cpp
index fc207c9fc7529..38a89e83f5f3b 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap.pass.cpp
@@ -20,6 +20,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap_until.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap_until.pass.cpp
index f1dc6adbeaae1..5fd119a21a98f 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap_until.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/ranges_is_heap_until.pass.cpp
@@ -21,6 +21,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/ranges_make_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/ranges_make_heap.pass.cpp
index f69351209e4f1..2c96c1987a121 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/ranges_make_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/ranges_make_heap.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <memory>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/ranges_pop_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/ranges_pop_heap.pass.cpp
index 9efe2513271ed..b0a00335ab440 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/ranges_pop_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/ranges_pop_heap.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <memory>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/ranges_push_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/ranges_push_heap.pass.cpp
index 571da879ed3f5..7161e6138487d 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/ranges_push_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/ranges_push_heap.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <memory>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/ranges_sort_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/ranges_sort_heap.pass.cpp
index e62410e3a948b..e7d346a627d65 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/ranges_sort_heap.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/ranges_sort_heap.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <memory>
@@ -32,6 +33,7 @@
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 
 // SFINAE tests.
 
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
index 2cf675476026c..644b4225976c7 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
@@ -16,9 +16,11 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 template <class T, class Iter1>
 struct Test {
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
index a78efaf58d7c7..c5f32cdbadff2 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
@@ -16,8 +16,9 @@
 //                           Iter2 first2, Iter2 last2, Compare comp);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp
index 827e6c1d20868..d852ef1fce45b 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp
@@ -24,6 +24,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp
index d68b0629e4c08..b34860267c762 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.max.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.max.pass.cpp
index e9e5240cf8cde..fb8b0daa3ee47 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.max.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.max.pass.cpp
@@ -33,6 +33,7 @@
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class T>
 concept HasMaxR = requires { std::ranges::max(std::declval<T>()); };
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.min.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.min.pass.cpp
index 3d92964c90daa..966a48d6fc2d4 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.min.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.min.pass.cpp
@@ -31,6 +31,7 @@
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class T>
 concept HasMinR = requires { std::ranges::min(std::declval<T>()); };
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/requires_forward_iterator.verify.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/requires_forward_iterator.verify.cpp
index 4fabc2cdfe106..3cc2a2cb1e715 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/requires_forward_iterator.verify.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/requires_forward_iterator.verify.cpp
@@ -13,6 +13,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.nth.element/ranges_nth_element.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.nth.element/ranges_nth_element.pass.cpp
index f497dbd830472..61bbe6359b771 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.nth.element/ranges_nth_element.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.nth.element/ranges_nth_element.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <iterator>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp
index 47f6779227f81..e591011747026 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp
index df55f63b73be3..0a61199e9dca1 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp
index f7870485cfefc..e047588baea31 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp
@@ -27,6 +27,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <cstddef>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_complexity.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_complexity.pass.cpp
index ddf4087ddd6cd..92df0e8658631 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_complexity.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_complexity.pass.cpp
@@ -38,6 +38,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <cstddef>
 #include <ranges>
 
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp
index ca830a09e3a0b..163b3913a4f62 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 
 #include "almost_satisfies_types.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp
index b018763a8bf70..a53cb3ec3ed19 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
index 67d7a9eae4cee..28e0786f0c56b 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
index 103bcf84ed6b3..4d26d51d7d135 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
@@ -16,6 +16,7 @@
 #include <algorithm>
 #include <functional>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
index 229ce5821014c..c0bddc7df9fdd 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
index 617cd7aacbfdb..f66656439b529 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
@@ -14,8 +14,9 @@
 //   is_sorted_until(Iter first, Iter last, Compare comp);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted.pass.cpp
index 5b1e5ce60c253..5095266de2760 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted.pass.cpp
@@ -23,6 +23,7 @@
 #include "test_execution_policies.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter>
 struct Test {
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted_comp.pass.cpp
index 8a6c24ca22af1..56e4c694bae30 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted_comp.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/pstl.is_sorted_comp.pass.cpp
@@ -24,6 +24,7 @@
 #include "test_execution_policies.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter>
 struct Test {
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp
index 36ec7892faa22..e5398dc3d161e 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp
@@ -31,6 +31,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/ranges_partial_sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/ranges_partial_sort.pass.cpp
index f348c6e93e19c..2c62a2bbaeb34 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/ranges_partial_sort.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/ranges_partial_sort.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/pstl.sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/pstl.sort.pass.cpp
index 0724e746eab4a..61fca0ef9dbc0 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/pstl.sort.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/pstl.sort.pass.cpp
@@ -29,6 +29,7 @@
 #include "test_execution_policies.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter>
 struct Test {
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/ranges.sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/ranges.sort.pass.cpp
index d7bf6dd75f90f..f9759bd887775 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/ranges.sort.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/ranges.sort.pass.cpp
@@ -23,6 +23,7 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/pstl.stable_sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/pstl.stable_sort.pass.cpp
index e1a64f5185b5d..3a9e624c8e40d 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/pstl.stable_sort.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/pstl.stable_sort.pass.cpp
@@ -25,12 +25,14 @@
 #include <array>
 #include <atomic>
 #include <cassert>
+#include <iterator>
 #include <vector>
 
-#include "test_macros.h"
+#include "MoveOnly.h"
 #include "test_execution_policies.h"
+#include "test_macros.h"
 #include "test_iterators.h"
-#include "MoveOnly.h"
+#include "type_algorithms.h"
 
 EXECUTION_POLICY_SFINAE_TEST(stable_sort);
 
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/ranges.stable.sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/ranges.stable.sort.pass.cpp
index 10e0874b3bc83..b96e1e843641a 100644
--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/ranges.stable.sort.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/ranges.stable.sort.pass.cpp
@@ -23,12 +23,14 @@
 
 #include <algorithm>
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 #include <ranges>
 
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
+#include "test_macros.h"
 
 // SFINAE tests.
 
diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp
index 01f14d79823fa..50f8fda2a676b 100644
--- a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <set>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_comp.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_comp.pass.cpp
index a7ce697335944..bed8d02f3e681 100644
--- a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_comp.pass.cpp
+++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_comp.pass.cpp
@@ -13,8 +13,9 @@
 // template <class InputIterator>
 //     multiset(InputIterator first, InputIterator last, const value_compare& comp);
 
-#include <set>
 #include <cassert>
+#include <set>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp
index dac553073f177..6a3146fcd2b0a 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp
@@ -20,6 +20,7 @@
 
 #include <set>
 #include <cassert>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_comp.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_comp.pass.cpp
index 573bbd316e073..e1763b87ff565 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_comp.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_comp.pass.cpp
@@ -13,8 +13,9 @@
 // template <class InputIterator>
 //     set(InputIterator first, InputIterator last, const value_compare& comp);
 
-#include <set>
 #include <cassert>
+#include <iterator>
+#include <set>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp
index f2ac013987eb8..51da5d2d2ca4d 100644
--- a/libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp
+++ b/libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp
@@ -14,6 +14,7 @@
 #include <vector>
 #include <cassert>
 #include <cstddef>
+#include <cstdint>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
index b43517da66f27..4e5fcd4d6757d 100644
--- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
@@ -27,6 +27,7 @@
 #include <type_traits>
 #include <string_view>
 #include <cassert>
+#include <utility>
 
 // On Windows, charset conversions cause allocations in the path class in
 // cases where no allocations are done on other platforms.
diff --git a/libcxx/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
index d92a44f2dbe14..dcf222267463c 100644
--- a/libcxx/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
@@ -20,6 +20,7 @@
 #include <cassert>
 #include <deque>
 #include <iterator>
+#include <ranges>
 #include <vector>
 #include <type_traits>
 
diff --git a/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
index f649083b900e6..e56176ca730b3 100644
--- a/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp
@@ -25,6 +25,7 @@
 #include <set>
 #include <string>
 #include <string_view>
+#include <type_traits>
 #include <unordered_map>
 #include <unordered_set>
 #include <vector>
diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
index 1b7848963a739..c34d59e405a9e 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/iterator_sentinel.pass.cpp
@@ -19,6 +19,7 @@
 #include <cassert>
 #include <deque>
 #include <iterator>
+#include <ranges>
 #include <vector>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/lwg3664.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/lwg3664.pass.cpp
index e2258e93966d0..164101c2bf5a8 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/lwg3664.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.distance/lwg3664.pass.cpp
@@ -15,8 +15,10 @@
 // template<class I, sized_sentinel_for<decay_t<I>> S>
 //   constexpr iter_difference_t<I> ranges::distance(const I& first, S last);
 
-#include <iterator>
 #include <cassert>
+#include <iterator>
+#include <type_traits>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/iterator.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/iterator.pass.cpp
index a29f7c9555235..ec3eff2db512a 100644
--- a/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/iterator.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/iterator.pass.cpp
@@ -12,6 +12,7 @@
 
 #include <iterator>
 #include <cassert>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/iterator.requirements/indirectcallable/projected/projected.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/indirectcallable/projected/projected.compile.pass.cpp
index 7ab92660fb068..c1c48d537c310 100644
--- a/libcxx/test/std/iterators/iterator.requirements/indirectcallable/projected/projected.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/indirectcallable/projected/projected.compile.pass.cpp
@@ -13,6 +13,7 @@
 #include <iterator>
 
 #include <concepts>
+#include <cstddef>
 #include <functional>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.bidir/bidirectional_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.bidir/bidirectional_iterator.compile.pass.cpp
index 7ab3a75f17ba1..b367423db7b52 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.bidir/bidirectional_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.bidir/bidirectional_iterator.compile.pass.cpp
@@ -14,6 +14,7 @@
 #include <iterator>
 
 #include <concepts>
+#include <cstddef>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/forward_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/forward_iterator.compile.pass.cpp
index 2df15cbd31423..a500757b50a2f 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/forward_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/forward_iterator.compile.pass.cpp
@@ -13,6 +13,7 @@
 #include <iterator>
 
 #include <concepts>
+#include <cstddef>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/input_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/input_iterator.compile.pass.cpp
index 0c72c70a72d27..e976e468e6f68 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/input_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/input_iterator.compile.pass.cpp
@@ -11,6 +11,7 @@
 // template<class T>
 // concept input_iterator;
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/input_or_output_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/input_or_output_iterator.compile.pass.cpp
index b8df4fb5f1d42..62469ea6f21e9 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/input_or_output_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/input_or_output_iterator.compile.pass.cpp
@@ -11,6 +11,7 @@
 // template<class In>
 // concept input_or_output_iterator;
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/random_access_iterator.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/random_access_iterator.compile.pass.cpp
index e42fd8b0e4e0f..de3912ea06f8a 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/random_access_iterator.compile.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/random_access_iterator.compile.pass.cpp
@@ -11,6 +11,7 @@
 // template<class T>
 // concept random_access_iterator;
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.swap/iter_swap.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.swap/iter_swap.pass.cpp
index e6507f7e77673..65a8cf281b8e0 100644
--- a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.swap/iter_swap.pass.cpp
+++ b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.swap/iter_swap.pass.cpp
@@ -15,6 +15,8 @@
 
 #include <array>
 #include <cassert>
+#include <type_traits>
+#include <utility>
 
 #include "../unqualified_lookup_wrapper.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/arrow.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/arrow.pass.cpp
index 208d6932d86d6..9d7b4419fba74 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/arrow.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/arrow.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr auto operator->() const noexcept
 //   requires contiguous_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
index cf7460911357e..df21d8016c1d1 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/assign.pass.cpp
@@ -12,7 +12,9 @@
 //   requires assignable_from<I&, const I2&>
 //     constexpr counted_iterator& operator=(const counted_iterator<I2>& x);
 
+#include <cassert>
 #include <iterator>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/base.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/base.pass.cpp
index 8d3e9f3d4f473..dfb922cd9bb89 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/base.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/base.pass.cpp
@@ -11,7 +11,9 @@
 // constexpr const I& base() const &;
 // constexpr I base() &&;
 
+#include <cassert>
 #include <iterator>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/compare.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/compare.pass.cpp
index eb0c5d8864a7c..eb349557d76cf 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/compare.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/compare.pass.cpp
@@ -14,7 +14,9 @@
 // friend constexpr bool operator==(
 //   const counted_iterator& x, default_sentinel_t);
 
+#include <cassert>
 #include <iterator>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/count.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/count.pass.cpp
index 6e161fb224db3..3012439ed90a5 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/count.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/count.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr iter_difference_t<I> count() const noexcept;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.conv.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.conv.pass.cpp
index 8e1a3f6770827..b6dcaf8451e92 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.conv.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.conv.pass.cpp
@@ -12,7 +12,9 @@
 //   requires convertible_to<const I2&, I>
 //     constexpr counted_iterator(const counted_iterator<I2>& x);
 
+#include <cassert>
 #include <iterator>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.default.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.default.pass.cpp
index 60596ad43c602..edde9b2da9ffc 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr counted_iterator() requires default_initializable<I> = default;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
index 00b6fb655c9cf..b29db9b146a18 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/ctor.iter.pass.cpp
@@ -14,6 +14,7 @@
 //   requires convertible_to<const I2&, I>
 //     constexpr counted_iterator(const counted_iterator<I2>& x);
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/decrement.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/decrement.pass.cpp
index 7b3c526b1280f..b833baed065d1 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/decrement.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/decrement.pass.cpp
@@ -13,6 +13,7 @@
 // constexpr counted_iterator operator--(int)
 //  requires bidirectional_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/deref.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/deref.pass.cpp
index ea7083f17cf8e..3204b99a526bc 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/deref.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/deref.pass.cpp
@@ -12,6 +12,7 @@
 // constexpr decltype(auto) operator*() const
 //   requires dereferenceable<const I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/increment.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/increment.pass.cpp
index 2fea2561ebf7f..9b880871b3573 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/increment.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/increment.pass.cpp
@@ -13,6 +13,7 @@
 // constexpr counted_iterator operator++(int)
 //   requires forward_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_move.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_move.pass.cpp
index 1494a9d649980..8e7f77f696893 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_move.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_move.pass.cpp
@@ -13,7 +13,9 @@
 //     noexcept(noexcept(ranges::iter_move(i.current)))
 //     requires input_iterator<I>;
 
+#include <cassert>
 #include <iterator>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_swap.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_swap.pass.cpp
index d3057e653ef85..8de4c406165d7 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_swap.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iter_swap.pass.cpp
@@ -13,7 +13,9 @@
 //     iter_swap(const counted_iterator& x, const counted_iterator<I2>& y)
 //       noexcept(noexcept(ranges::iter_swap(x.current, y.current)));
 
+#include <cassert>
 #include <iterator>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iterator_traits.compile.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iterator_traits.compile.pass.cpp
index 8675c532f82b7..9d3c70814e03b 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/iterator_traits.compile.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/iterator_traits.compile.pass.cpp
@@ -15,6 +15,7 @@
 //                                 add_pointer_t<iter_reference_t<I>>, void>;
 // };
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/member_types.compile.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/member_types.compile.pass.cpp
index 569b57c6bffc2..39d89334a636c 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/member_types.compile.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/member_types.compile.pass.cpp
@@ -10,6 +10,7 @@
 
 // iterator_type, value_type, difference_type, iterator_concept, iterator_category
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.default_sentinel.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.default_sentinel.pass.cpp
index 7eb4ff402e479..d972c6feb187d 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.default_sentinel.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.default_sentinel.pass.cpp
@@ -13,6 +13,7 @@
 // friend constexpr iter_difference_t<I> operator-(
 //   default_sentinel_t, const counted_iterator& y);
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.eq.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.eq.pass.cpp
index 854c36a8c35be..912025a1d857e 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.eq.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.eq.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr counted_iterator& operator-=(iter_difference_t<I> n)
 //   requires random_access_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.iter.pass.cpp
index f2767a960ffbd..af24c39628072 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.iter.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.iter.pass.cpp
@@ -12,6 +12,7 @@
 //   friend constexpr iter_difference_t<I2> operator-(
 //     const counted_iterator& x, const counted_iterator<I2>& y);
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.size.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.size.pass.cpp
index e6fa733eb0e0a..d755b5c6cf972 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.size.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/minus.size.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr counted_iterator operator-(iter_difference_t<I> n) const
 //   requires random_access_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/plus.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/plus.pass.cpp
index a397a8717b89a..277b0bff97cfd 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/plus.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/plus.pass.cpp
@@ -16,7 +16,9 @@
 // constexpr counted_iterator& operator+=(iter_difference_t<I> n)
 //     requires random_access_iterator<I>;
 
+#include <cassert>
 #include <iterator>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/subscript.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/subscript.pass.cpp
index 7e1c320c0ca78..0b28a6d7a32b3 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/subscript.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/subscript.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr decltype(auto) operator[](iter_difference_t<I> n) const
 //   requires random_access_iterator<I>;
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/counted.iterator/three_way_compare.pass.cpp b/libcxx/test/std/iterators/predef.iterators/counted.iterator/three_way_compare.pass.cpp
index 38df872fd1650..e97dd7156bb3d 100644
--- a/libcxx/test/std/iterators/predef.iterators/counted.iterator/three_way_compare.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/counted.iterator/three_way_compare.pass.cpp
@@ -12,6 +12,7 @@
 //   friend constexpr strong_ordering operator<=>(
 //     const counted_iterator& x, const counted_iterator<I2>& y);
 
+#include <cassert>
 #include <iterator>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.default.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.default.pass.cpp
index b7b02be51f6df..fce22c18feec8 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.default.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.default.pass.cpp
@@ -10,8 +10,9 @@
 
 // constexpr common_iterator() requires default_initializable<I> = default;
 
-#include <iterator>
 #include <cassert>
+#include <iterator>
+#include <type_traits>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.iter.pass.cpp
index 57d89e3c2e1b8..3ad6e5149453e 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.iter.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.iter.pass.cpp
@@ -12,6 +12,7 @@
 
 #include <iterator>
 #include <cassert>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.sentinel.pass.cpp b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.sentinel.pass.cpp
index 6e1c2130c9c91..cc678642d81c9 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.sentinel.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/ctor.sentinel.pass.cpp
@@ -13,6 +13,7 @@
 #include <iterator>
 #include <cassert>
 #include <type_traits>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h b/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
index c51b70520fda8..f5717f3eb3df3 100644
--- a/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
+++ b/libcxx/test/std/iterators/predef.iterators/iterators.common/types.h
@@ -9,6 +9,8 @@
 #ifndef TEST_STD_RANGES_ITERATORS_PREDEF_ITERATORS_ITERATORS_COMMON_TYPES_H
 #define TEST_STD_RANGES_ITERATORS_PREDEF_ITERATORS_ITERATORS_COMMON_TYPES_H
 
+#include <utility>
+
 #include "test_macros.h"
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_move.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_move.pass.cpp
index e0f63ac594367..d7d1d660359ab 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_move.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_move.pass.cpp
@@ -17,8 +17,10 @@
 #include <iterator>
 
 #include <cassert>
+#include <cstddef>
 #include <type_traits>
 #include <utility>
+
 #include "test_iterators.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_swap.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_swap.pass.cpp
index aa0815390391c..f7e82c8718450 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_swap.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/iter_swap.pass.cpp
@@ -18,8 +18,10 @@
 #include <iterator>
 
 #include <cassert>
+#include <cstddef>
 #include <type_traits>
 #include <utility>
+
 #include "test_iterators.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.pass.cpp
index f7830f73e5248..3955ebd9d2ac2 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <iterator>
 #include <cassert>
+#include <type_traits>
 #include <utility>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.conv/base.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.conv/base.pass.cpp
index 6e348b59be16b..4144107889166 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.conv/base.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.conv/base.pass.cpp
@@ -12,9 +12,12 @@
 // constexpr const Iterator& base() const & noexcept; // From C++20
 // constexpr Iterator base() &&; // From C++20
 
+#include <cassert>
+#include <cstddef>
 #include <iterator>
-
+#include <type_traits>
 #include <utility>
+
 #include "test_iterators.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
index 8b92eb25761bf..8cb99be391d03 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
@@ -24,6 +24,7 @@
 //  using reference         = iter_rvalue_reference_t<Iterator>; // Until C++20, value_type&&
 // };
 
+#include <cstddef>
 #include <functional>
 #include <iterator>
 #include <type_traits>
diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/sized_sentinel.compile.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/sized_sentinel.compile.pass.cpp
index 998b13ed49455..d72b1e8977203 100644
--- a/libcxx/test/std/iterators/predef.iterators/move.iterators/sized_sentinel.compile.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/sized_sentinel.compile.pass.cpp
@@ -8,6 +8,7 @@
 
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 
+#include <cstddef>
 #include <iterator>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_move.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_move.pass.cpp
index 5e35f5c8facc4..d6e9a4abef8cc 100644
--- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_move.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_move.pass.cpp
@@ -18,8 +18,10 @@
 #include <iterator>
 
 #include <cassert>
+#include <cstddef>
 #include <type_traits>
 #include <utility>
+
 #include "test_iterators.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_swap.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_swap.pass.cpp
index 7b6fb43b0001f..d420d0f53b5ef 100644
--- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_swap.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/iter_swap.pass.cpp
@@ -20,8 +20,10 @@
 #include <iterator>
 
 #include <cassert>
+#include <cstddef>
 #include <type_traits>
 #include <utility>
+
 #include "test_iterators.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
index 57607e6d6a521..00c766e2e2d57 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp
@@ -19,6 +19,7 @@
 #include <locale>
 
 #include "test_iterators.h"
+#include "test_macros.h"
 
 typedef std::num_put<char, cpp17_output_iterator<char*> > F;
 
diff --git a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
index 5eb7c92daec2a..941148189fbe1 100644
--- a/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
+++ b/libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_neg_one.pass.cpp
@@ -19,6 +19,7 @@
 #include <cassert>
 #include <streambuf>
 #include <sstream>
+#include <type_traits>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.iota/ranges.iota.pass.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.iota/ranges.iota.pass.cpp
index 9fa50f1326f1d..53f9c0815b26a 100644
--- a/libcxx/test/std/numerics/numeric.ops/numeric.iota/ranges.iota.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/numeric.iota/ranges.iota.pass.cpp
@@ -19,6 +19,7 @@
 #include "almost_satisfies_types.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 //
 // Testing constraints
diff --git a/libcxx/test/std/numerics/numeric.ops/reduce/pstl.reduce.pass.cpp b/libcxx/test/std/numerics/numeric.ops/reduce/pstl.reduce.pass.cpp
index f5748d7c823b7..bf37bbef447e9 100644
--- a/libcxx/test/std/numerics/numeric.ops/reduce/pstl.reduce.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/reduce/pstl.reduce.pass.cpp
@@ -21,6 +21,8 @@
 //            ForwardIterator first, ForwardIterator last, T init,
 //            BinaryOperation binary_op);
 
+#include <cassert>
+#include <iterator>
 #include <numeric>
 #include <vector>
 
@@ -28,6 +30,7 @@
 #include "test_execution_policies.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter, class ValueT>
 struct Test {
diff --git a/libcxx/test/std/numerics/numeric.ops/reduce/reduce.pass.cpp b/libcxx/test/std/numerics/numeric.ops/reduce/reduce.pass.cpp
index 53a595e0bed30..a4496f9c88a56 100644
--- a/libcxx/test/std/numerics/numeric.ops/reduce/reduce.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/reduce/reduce.pass.cpp
@@ -17,6 +17,8 @@
 
 #include <numeric>
 #include <cassert>
+#include <iterator>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init.pass.cpp b/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init.pass.cpp
index 59590b1a1fa69..17491a9d9de18 100644
--- a/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init.pass.cpp
@@ -14,8 +14,9 @@
 // template<class InputIterator, class T>
 //   T reduce(InputIterator first, InputIterator last, T init);
 
-#include <numeric>
 #include <cassert>
+#include <numeric>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init_op.pass.cpp b/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init_op.pass.cpp
index 347d3755a07cf..2c8346bf38a6f 100644
--- a/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init_op.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/reduce/reduce_init_op.pass.cpp
@@ -17,6 +17,8 @@
 #include <numeric>
 #include <cassert>
 #include <functional>
+#include <initializer_list>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.binary.pass.cpp b/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.binary.pass.cpp
index 6d8bb47ac7dc1..0c84a6149cadb 100644
--- a/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.binary.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.binary.pass.cpp
@@ -29,6 +29,7 @@
 //                      BinaryOperation1 binary_op1,
 //                      BinaryOperation2 binary_op2);
 
+#include <cassert>
 #include <numeric>
 #include <vector>
 
diff --git a/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.unary.pass.cpp b/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.unary.pass.cpp
index 4cea3d405aa02..3bf8a7138fd62 100644
--- a/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.unary.pass.cpp
+++ b/libcxx/test/std/numerics/numeric.ops/transform.reduce/pstl.transform_reduce.unary.pass.cpp
@@ -19,6 +19,7 @@
 //                      ForwardIterator first, ForwardIterator last,
 //                      T init, BinaryOperation binary_op, UnaryOperation unary_op);
 
+#include <cassert>
 #include <numeric>
 #include <string>
 #include <vector>
@@ -26,7 +27,7 @@
 #include "MoveOnly.h"
 #include "test_execution_policies.h"
 #include "test_iterators.h"
-#include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter1, class ValueT>
 struct Test {
diff --git a/libcxx/test/std/ranges/range.access/size.pass.cpp b/libcxx/test/std/ranges/range.access/size.pass.cpp
index ee44aa815ba99..0524c784530eb 100644
--- a/libcxx/test/std/ranges/range.access/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.access/size.pass.cpp
@@ -13,6 +13,8 @@
 #include <ranges>
 
 #include <cassert>
+#include <utility>
+
 #include "test_macros.h"
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/ranges/range.access/ssize.pass.cpp b/libcxx/test/std/ranges/range.access/ssize.pass.cpp
index ac2c5b7b6b764..9fe281b275863 100644
--- a/libcxx/test/std/ranges/range.access/ssize.pass.cpp
+++ b/libcxx/test/std/ranges/range.access/ssize.pass.cpp
@@ -13,6 +13,8 @@
 #include <ranges>
 
 #include <cassert>
+#include <type_traits>
+
 #include "test_macros.h"
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp
index 9d1eb12434581..6fec182d3b5a9 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp
@@ -13,6 +13,7 @@
 #include <ranges>
 
 #include <algorithm>
+#include <cassert>
 #include <vector>
 
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/ctor.other.pass.cpp
index 36c2456e459db..3c09ae8b3cde3 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/ctor.other.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <cassert>
 #include <tuple>
+#include <utility>
 
 #include "../helpers.h"
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/member_types.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/member_types.compile.pass.cpp
index f8f20919fbf4b..684569516d747 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/member_types.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/iterator/member_types.compile.pass.cpp
@@ -15,6 +15,7 @@
 #include <ranges>
 #include <tuple>
 #include <type_traits>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/ctor.other.pass.cpp
index d06534ea52d52..eda06c00ecba3 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/ctor.other.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../helpers.h"
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/eq.pass.cpp
index d7510a099c806..c7379be794b18 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/eq.pass.cpp
@@ -16,6 +16,7 @@
 #include <compare>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../helpers.h"
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/minus.pass.cpp
index bed863a65d47d..6dc7a4a72e919 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/sentinel/minus.pass.cpp
@@ -23,6 +23,7 @@
 #include <functional>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../helpers.h"
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/size.pass.cpp
index 12cdf52d711bd..a12f6e0914f96 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent.transform/size.pass.cpp
@@ -12,6 +12,7 @@
 // constexpr auto size() const requires sized_range<const InnerView>
 
 #include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "helpers.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/adaptor.pass.cpp
index 5fd4e803955ad..8e72871649d51 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/adaptor.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/adaptor.pass.cpp
@@ -10,6 +10,7 @@
 
 // Test std::views::adjacent<N>
 
+#include <cassert>
 #include <concepts>
 #include <cstddef>
 #include <iterator>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/ctor.views.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/ctor.views.pass.cpp
index 6add56fe7a2d5..62e179515fa6d 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/ctor.views.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/ctor.views.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr explicit adjacent_view(View)
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/arithmetic.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/arithmetic.pass.cpp
index 671a5c3fec4d0..880c06d614438 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/arithmetic.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/arithmetic.pass.cpp
@@ -21,6 +21,7 @@
 // friend constexpr difference_type operator-(const iterator& x, const iterator& y)
 //   requires sized_sentinel_for<iterator_t<Base>, iterator_t<Base>>;
 
+#include <cassert>
 #include <iterator>
 #include <ranges>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/compare.pass.cpp
index 8461d7fa4a53c..ceea9e3cf5abd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/compare.pass.cpp
@@ -21,6 +21,7 @@
 //   requires random_access_range<Base> &&
 //            three_way_comparable<iterator_t<Base>>;
 
+#include <cassert>
 #include <ranges>
 #include <compare>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.default.pass.cpp
index 8cb005a9d3f8f..48aa71751ef95 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // iterator() = default;
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.other.pass.cpp
index db70e1affe3ee..510c3ce5c7b73 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/ctor.other.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <cassert>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/member_types.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/member_types.compile.pass.cpp
index b24c730e1197f..f333d0200365e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/member_types.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/member_types.compile.pass.cpp
@@ -14,6 +14,7 @@
 #include <iterator>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/singular.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/singular.pass.cpp
index c1cc9498d39e1..7db80b412d58d 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/singular.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/iterator/singular.pass.cpp
@@ -12,6 +12,7 @@
 // [range.adjacent.iterator#2] If the invocation of any non-const member function of `iterator` exits via an
 // exception, the iterator acquires a singular value.
 
+#include <cassert>
 #include <ranges>
 
 #include <tuple>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/ctor.other.pass.cpp
index 7a3ebbd94ca9d..de411975b3e40 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/ctor.other.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/eq.pass.cpp
index a79107c69fb4b..fad9e20e3bfa5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/eq.pass.cpp
@@ -16,6 +16,7 @@
 #include <compare>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/minus.pass.cpp
index 9f3fada6013cb..2b21ebc6605da 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/sentinel/minus.pass.cpp
@@ -23,6 +23,7 @@
 #include <functional>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.adjacent/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.adjacent/size.pass.cpp
index 79b20e56f53f3..44beb12618018 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.adjacent/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.adjacent/size.pass.cpp
@@ -11,7 +11,9 @@
 // constexpr auto size() requires sized_range<View>
 // constexpr auto size() const requires sized_range<const View>
 
+#include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.all/all_t.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/all_t.compile.pass.cpp
index 703467611b974..64f097a2cc7b2 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/all_t.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/all_t.compile.pass.cpp
@@ -14,6 +14,7 @@
 #include <ranges>
 
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct View : std::ranges::view_base {
   int *begin() const;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/begin_end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/begin_end.pass.cpp
index 2dddd84d8796e..90b471b7732fd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/begin_end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/begin_end.pass.cpp
@@ -20,6 +20,7 @@
 #include <cassert>
 #include <concepts>
 #include <memory>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/data.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/data.pass.cpp
index 568371dd5c7d4..0b6547177eabd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/data.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/data.pass.cpp
@@ -16,6 +16,7 @@
 #include <array>
 #include <cassert>
 #include <concepts>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/empty.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/empty.pass.cpp
index 349233f037b74..42418c7d2c2ca 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/empty.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/empty.pass.cpp
@@ -16,6 +16,7 @@
 #include <array>
 #include <cassert>
 #include <concepts>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/size.pass.cpp
index 20f3eaae31c36..eab261175cf71 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.all/range.owning.view/size.pass.cpp
@@ -16,6 +16,7 @@
 #include <array>
 #include <cassert>
 #include <concepts>
+#include <utility>
 
 #include "test_iterators.h"
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp
index db846b25b9551..7bf0aedea383e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp
@@ -17,6 +17,7 @@
 #include <ranges>
 
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct SimpleView : std::ranges::view_base {
   int* begin() const;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp
index 529a609a3bbe1..877d515638462 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp
@@ -16,6 +16,7 @@
 #include <ranges>
 
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct DefaultConstructibleView : std::ranges::view_base {
   int* begin() const;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/begin.pass.cpp
index d2d1d313cebe9..2fa9218272fee 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/begin.pass.cpp
@@ -18,6 +18,7 @@
 #include <utility>
 
 #include "test_iterators.h"
+#include "test_macros.h"
 #include "types.h"
 
 struct Range : std::ranges::view_base {
diff --git a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/end.pass.cpp
index 61ea0c7471953..da46897a29869 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/end.pass.cpp
@@ -19,6 +19,7 @@
 #include <functional>
 
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct NonCommonRange : std::ranges::view_base {
   using Iterator = forward_iterator<int*>;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/compare.pass.cpp
index 8757d63b6d9ae..08ce289c2bc9e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/compare.pass.cpp
@@ -24,6 +24,7 @@
 #include "../types.h"
 #include "test_iterators.h"
 #include "test_macros.h"
+#include "type_algorithms.h"
 
 template <class Iter, class Sent = sentinel_wrapper<Iter>>
 constexpr void test() {
diff --git a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/types.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/types.compile.pass.cpp
index 2093936ccf799..2631a44be9ff9 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/types.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/types.compile.pass.cpp
@@ -22,6 +22,7 @@
 
 #include "../types.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 struct TestValueTypeAndDifferenceType {
   template <class Iter>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/base.pass.cpp
index eaf2e7d22130e..5fcd1a78961f5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/base.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr V base() const& requires copy_constructible<V> { return base_; }
 // constexpr V base() && { return std::move(base_); }
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
index 7e01b5884728f..e02f2b976afe4 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/begin.pass.cpp
@@ -14,7 +14,9 @@
 // constexpr auto begin() const
 //   requires random_access_range<const V> && sized_range<const V>;
 
+#include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.default.pass.cpp
index ba6e2eb7582a3..70414604a5174 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // drop_view() requires default_initializable<V> = default;
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
index 4f4257f9102cb..aeb31ae2fec4b 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/ctor.view.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr drop_view(V base, range_difference_t<V> count);  // explicit since C++23
 
+#include <cassert>
 #include <ranges>
 
 #include "test_convertible.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp
index caf64c231c347..f45e6e40d3e31 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <cstddef>
 #include <cstring>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/end.pass.cpp
index 62182ad98d459..3d835520c8aae 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/end.pass.cpp
@@ -13,6 +13,7 @@
 // constexpr auto end() const
 //   requires range<const V>
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.drop/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.drop/size.pass.cpp
index 8647bfa296a31..2914f9771dee6 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.drop/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.drop/size.pass.cpp
@@ -13,6 +13,7 @@
 // constexpr auto size() const
 //   requires sized_range<const V>
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/arithmetic.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/arithmetic.pass.cpp
index 7a4ce83f1a9f6..ce068c64387f4 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/arithmetic.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/arithmetic.pass.cpp
@@ -28,6 +28,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <tuple>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/compare.pass.cpp
index 4dd52a80a0eba..83ecb6e24a7c2 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/compare.pass.cpp
@@ -21,6 +21,7 @@
 // friend constexpr auto operator<=>(const iterator& x, const iterator& y)
 //   requires random_access_range<Base> && three_way_comparable<iterator_t<Base>>;
 
+#include <cassert>
 #include <compare>
 #include <functional>
 #include <ranges>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.default.pass.cpp
index 11da4843270bf..902b3ac1ce434 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // iterator() requires default_initializable<iterator_t<Base>> = default;
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/equality.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/equality.pass.cpp
index d8a3149398bf7..fd6d87b509786 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/equality.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/equality.pass.cpp
@@ -15,6 +15,7 @@
 #include <array>
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/minus.pass.cpp
index 343bf80346302..6857eacf8def9 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/minus.pass.cpp
@@ -24,6 +24,7 @@
 #include <functional>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/types.h b/libcxx/test/std/ranges/range.adaptors/range.elements/types.h
index 4c4084695ff33..5e2d727a9f772 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/types.h
@@ -10,6 +10,7 @@
 #define TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_ELEMENTS_TYPES_H
 
 #include <array>
+#include <cstdint>
 #include <functional>
 #include <ranges>
 #include <tuple>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/begin.pass.cpp
index 478462795a4a3..d06d58a6558d6 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.filter/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.filter/begin.pass.cpp
@@ -13,7 +13,9 @@
 #include <ranges>
 
 #include <cassert>
+
 #include "test_iterators.h"
+#include "test_macros.h"
 #include "types.h"
 
 struct Range : std::ranges::view_base {
diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/end.pass.cpp
index 8c692fe60804f..61a221e2dea90 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.filter/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.filter/end.pass.cpp
@@ -15,7 +15,9 @@
 #include <cassert>
 #include <concepts>
 #include <type_traits>
+
 #include "test_iterators.h"
+#include "test_macros.h"
 
 struct Range : std::ranges::view_base {
   using Iterator = forward_iterator<int*>;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.overview/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.overview/adaptor.pass.cpp
index da53bfaaa5a52..d247a94dbfc25 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.overview/adaptor.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.overview/adaptor.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <memory>
 #include <span>
 #include <string_view>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.view/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.view/end.pass.cpp
index c6e973abfface..ffe0a28d637dd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.view/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.view/end.pass.cpp
@@ -21,6 +21,7 @@
 #include <ranges>
 
 #include <algorithm>
+#include <cassert>
 #include <string>
 #include <vector>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
index 005d0d1d2d5cb..48f3eb4ea9ca5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
@@ -18,6 +18,7 @@
 #include <cassert>
 #include <ranges>
 #include <string_view>
+#include <utility>
 
 #include "types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
index 516ba25a0e859..a4348832c14ca 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
@@ -17,6 +17,7 @@
 #include <cassert>
 #include <ranges>
 #include <type_traits>
+#include <utility>
 
 #include "test_macros.h"
 #include "types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/ctor.other.pass.cpp
index e220b2cfeac84..617fc5640d1da 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/ctor.other.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "../types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/eq.pass.cpp
index 5c831f33e67c7..f02fa50fa4864 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.iterator/eq.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/ctor.other.pass.cpp
index 8e78c3732e208..3b67f46164985 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/ctor.other.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/eq.pass.cpp
index 9d6cb76902622..e280cc766dd0f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/range.join.sentinel/eq.pass.cpp
@@ -17,6 +17,7 @@
 #include <functional>
 #include <ranges>
 #include <type_traits>
+#include <utility>
 
 #include "../types.h"
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/base.pass.cpp
index 24ce2e9b4533c..78e8c1f9db76c 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/base.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <concepts>
 #include <utility>
 #include "../types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/deref.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/deref.pass.cpp
index dc967b673cf26..1b01c97df3a2b 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/deref.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr decltype(auto) inner-iterator::operator*() const;
 
+#include <cassert>
 #include <ranges>
 
 #include "../types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/equal.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/equal.pass.cpp
index dbf3bfa126ae8..369f79ae751c3 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/equal.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/equal.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <concepts>
 #include <string_view>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/equal.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/equal.pass.cpp
index 6cbc98a94645f..566fad66ebdde 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/equal.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/equal.pass.cpp
@@ -15,6 +15,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <concepts>
 #include <string_view>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.split/types.h b/libcxx/test/std/ranges/range.adaptors/range.split/types.h
index aa47faf0f468b..0fd5af569d285 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.split/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.split/types.h
@@ -9,6 +9,7 @@
 #ifndef TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_SPLIT_TYPES_H
 #define TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_SPLIT_TYPES_H
 
+#include <cstdint>
 #include <functional>
 #include <ranges>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/equality.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/equality.pass.cpp
index b00b3dd0bd053..473a09add7df5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/equality.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/equality.pass.cpp
@@ -17,7 +17,9 @@
 
 #include <array>
 #include <cassert>
+#include <cstdint>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/base.pass.cpp
index 15b2b5476e86d..7947319408dfc 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/base.pass.cpp
@@ -12,6 +12,7 @@
 
 #include <ranges>
 #include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/ctor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/ctor.pass.cpp
index 8928371939c87..61d33760c71d7 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/ctor.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/ctor.pass.cpp
@@ -13,8 +13,9 @@
 // constexpr sentinel(sentinel<!Const> s)
 //   requires Const && convertible_to<sentinel_t<V>, sentinel_t<Base>>;
 
-#include <ranges>
 #include <cassert>
+#include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/base.pass.cpp
index 496f68f1769a9..d3072d78fef7b 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/base.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr V base() const& requires copy_constructible<V>
 // constexpr V base() &&
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
index a3ddbf8914bf3..5067c1d357706 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/begin.pass.cpp
@@ -13,6 +13,7 @@
 //   requires range<const V> &&
 //            regular_invocable<const F&, range_reference_t<const V>>;
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/end.pass.cpp
index bfa9e6431c507..46fe20e998dcd 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/end.pass.cpp
@@ -17,7 +17,9 @@
 //   requires common_range<const V> &&
 //            regular_invocable<const F&, range_reference_t<const V>>;
 
+#include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "test_macros.h"
 #include "types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/arithmetic.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/arithmetic.pass.cpp
index 3b2b738f4e104..f4093ee4d0230 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/arithmetic.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/arithmetic.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::operator{++,--,+=,-=}
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/base.pass.cpp
index 02a93f4247997..7ec33b8f93a7a 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/base.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::base
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/compare.pass.cpp
index 7077cf49a7c65..c4987081c00d9 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/compare.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::operator{<,>,<=,>=,==,!=,<=>}
 
+#include <cassert>
 #include <ranges>
 #include <compare>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/deref.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/deref.pass.cpp
index 5d8bf51c69696..171f0d145f7ac 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/deref.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::operator*
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/plus_minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/plus_minus.pass.cpp
index 284fb41d4fe78..055d5b917263d 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/plus_minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/plus_minus.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::operator{+,-}
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp
index a2da6acb796b4..ce48e09d6eb8f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp
@@ -10,6 +10,7 @@
 
 // class transform_view::<sentinel>;
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/subscript.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/subscript.pass.cpp
index 30c0b2ae8d8c9..9fd3207b66d2e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/subscript.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/iterator/subscript.pass.cpp
@@ -10,6 +10,7 @@
 
 // transform_view::<iterator>::operator[]
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.transform/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.transform/size.pass.cpp
index 614686763ce9f..46ee4e9190bb7 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.transform/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.transform/size.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr auto size() requires sized_range<V>
 // constexpr auto size() const requires sized_range<const V>
 
+#include <cassert>
 #include <ranges>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/begin.pass.cpp
index 9b326e1cd6981..27d955a2039e2 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/begin.pass.cpp
@@ -14,6 +14,7 @@
 //            regular_invocable<const F&, range_reference_t<const Views>...>;
 
 #include <ranges>
+#include <utility>
 
 #include <cassert>
 #include <concepts>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.default.pass.cpp
index 751210f2a4f1f..bd9aeefab7dc5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.default.pass.cpp
@@ -11,6 +11,7 @@
 // zip_transform_view() = default;
 
 #include <ranges>
+#include <utility>
 
 #include <cassert>
 #include <type_traits>
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.views.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.views.pass.cpp
index 5f3b5a3ff6f99..e8668a1365f97 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.views.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/ctor.views.pass.cpp
@@ -11,6 +11,7 @@
 // constexpr explicit zip_transform_view(F, Views...)
 
 #include <algorithm>
+#include <cassert>
 #include <ranges>
 #include <vector>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/end.pass.cpp
index e6c7094e7d720..b12fbc9e74de8 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/end.pass.cpp
@@ -13,7 +13,9 @@
 //   requires range<const InnerView> &&
 //            regular_invocable<const F&, range_reference_t<const Views>...>;
 
+#include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/arithmetic.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/arithmetic.pass.cpp
index d697ae571cb7d..1f478f1cee3d0 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/arithmetic.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/arithmetic.pass.cpp
@@ -22,6 +22,7 @@
 #include <ranges>
 
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/compare.pass.cpp
index 2befb7e4cc58c..5b216e26a99bf 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/compare.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <compare>
 
 #include "test_iterators.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.default.pass.cpp
index 8f8369d6af5f2..c13aefde4cba7 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // iterator() = default;
 
+#include <cassert>
 #include <ranges>
 
 #include "../types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.other.pass.cpp
index c643d83a2c665..fc1fb70e91795 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/iterator/ctor.other.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <array>
 #include <ranges>
+#include <utility>
 
 #include <cassert>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/ctor.other.pass.cpp
index be7c3d15a9109..c91a57cec6911 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/ctor.other.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/eq.pass.cpp
index 9b20dacd1f696..f4750a14437aa 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/eq.pass.cpp
@@ -15,6 +15,7 @@
 #include <cassert>
 #include <compare>
 #include <ranges>
+#include <utility>
 
 #include "../types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/minus.pass.cpp
index 48a0a6d206db5..a5438da18ca99 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/sentinel/minus.pass.cpp
@@ -18,6 +18,7 @@
 #include <functional>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../types.h"
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/size.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/size.pass.cpp
index 140bdc311d527..fac08c1f4ace1 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip.transform/size.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip.transform/size.pass.cpp
@@ -12,6 +12,7 @@
 // constexpr auto size() const requires sized_range<const InnerView>
 
 #include <ranges>
+#include <utility>
 
 #include <cassert>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/ctor.views.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/ctor.views.pass.cpp
index 513d26817e915..7013d675e423f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/ctor.views.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/ctor.views.pass.cpp
@@ -10,6 +10,7 @@
 
 // constexpr explicit zip_view(Views...)
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/end.pass.cpp
index 7cf9f5f462725..4acef0b5a662f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/end.pass.cpp
@@ -11,8 +11,10 @@
 // constexpr auto end() requires(!(simple-view<Views> && ...))
 // constexpr auto end() const requires(range<const Views>&&...)
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/arithmetic.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/arithmetic.pass.cpp
index 444f3ed95b322..2beec58fdc89a 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/arithmetic.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/arithmetic.pass.cpp
@@ -22,6 +22,7 @@
 #include <ranges>
 
 #include <array>
+#include <cassert>
 #include <concepts>
 #include <functional>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/compare.pass.cpp
index 5ad054c0c3b1d..3408cf09a360f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/compare.pass.cpp
@@ -13,8 +13,9 @@
 // friend constexpr auto operator<=>(const iterator& x, const iterator& y)
 //   requires all-random-access<Const, Views...>;
 
-#include <ranges>
+#include <cassert>
 #include <compare>
+#include <ranges>
 
 #include "test_iterators.h"
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.default.pass.cpp
index abced1629a4a7..015376c4b6032 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.default.pass.cpp
@@ -10,6 +10,7 @@
 
 // iterator() = default;
 
+#include <cassert>
 #include <ranges>
 #include <tuple>
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.other.pass.cpp
index 6b8b55fbe68e8..e6f124983a9d8 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/ctor.other.pass.cpp
@@ -16,6 +16,7 @@
 
 #include <cassert>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/deref.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/deref.pass.cpp
index 61495fae0467f..068f4846b72ce 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/deref.pass.cpp
@@ -14,6 +14,7 @@
 #include <cassert>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/member_types.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/member_types.compile.pass.cpp
index 852ea9ba069b0..223719246a945 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/member_types.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/member_types.compile.pass.cpp
@@ -13,6 +13,7 @@
 #include <array>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/singular.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/singular.pass.cpp
index 5cd76e03bab48..7520c75184311 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/singular.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/iterator/singular.pass.cpp
@@ -14,6 +14,7 @@
 
 #include <ranges>
 
+#include <cassert>
 #include <tuple>
 
 #include "../../range_adaptor_types.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/ctor.other.pass.cpp
index c3f50b0aeabd8..dc3ba740bfe33 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/ctor.other.pass.cpp
@@ -12,6 +12,7 @@
 
 #include <cassert>
 #include <ranges>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/eq.pass.cpp
index fa26d987b8dd3..94cdfad53cb8e 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/eq.pass.cpp
@@ -16,6 +16,7 @@
 #include <compare>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 #include "test_range.h"
diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/minus.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/minus.pass.cpp
index 61f8935af3c4a..db762dcf9ec85 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/minus.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.zip/sentinel/minus.pass.cpp
@@ -25,6 +25,7 @@
 #include <functional>
 #include <ranges>
 #include <tuple>
+#include <utility>
 
 #include "../../range_adaptor_types.h"
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range_adaptor_types.h b/libcxx/test/std/ranges/range.adaptors/range_adaptor_types.h
index da5b94d75f466..0b654566e35b8 100644
--- a/libcxx/test/std/ranges/range.adaptors/range_adaptor_types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range_adaptor_types.h
@@ -9,6 +9,7 @@
 #ifndef TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_ADAPTOR_TYPES_H
 #define TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_ADAPTOR_TYPES_H
 
+#include <cstdint>
 #include <functional>
 #include <ranges>
 
diff --git a/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/compare.pass.cpp b/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/compare.pass.cpp
index dba5ce24078c5..bfeb7c231b81a 100644
--- a/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/compare.pass.cpp
+++ b/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/compare.pass.cpp
@@ -10,6 +10,7 @@
 
 // iota_view::<iterator>::operator{<,>,<=,>=,==,!=,<=>}
 
+#include <cassert>
 #include <ranges>
 #include <compare>
 
diff --git a/libcxx/test/std/ranges/range.utility/range.elementsof/ctad.pass.cpp b/libcxx/test/std/ranges/range.utility/range.elementsof/ctad.pass.cpp
index 532fe01306c5a..a813f67d5d8f2 100644
--- a/libcxx/test/std/ranges/range.utility/range.elementsof/ctad.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.elementsof/ctad.pass.cpp
@@ -25,6 +25,7 @@
 #include "min_allocator.h"
 #include "test_allocator.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 template <class Allocator, class Range>
 constexpr void test_impl() {
diff --git a/libcxx/test/std/ranges/range.utility/range.elementsof/elements_of.pass.cpp b/libcxx/test/std/ranges/range.utility/range.elementsof/elements_of.pass.cpp
index 77a9b84e01c24..f82a23079665a 100644
--- a/libcxx/test/std/ranges/range.utility/range.elementsof/elements_of.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/range.elementsof/elements_of.pass.cpp
@@ -24,6 +24,7 @@
 #include "min_allocator.h"
 #include "test_allocator.h"
 #include "test_iterators.h"
+#include "type_algorithms.h"
 
 template <class Iterator>
 struct Range {
diff --git a/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp b/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
index 3f7c174d3fe48..bce13c38f2dab 100644
--- a/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
+++ b/libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp
@@ -15,7 +15,9 @@
 #include <ranges>
 
 #include <cassert>
+#include <type_traits>
 #include <utility>
+
 #include "test_macros.h"
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp
index 44aa0980972bd..0ed62b345fa8d 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp
@@ -22,6 +22,7 @@
 // is a type that does not qualify as an allocator (in addition to the `input_range` concept being satisfied by `R`).
 
 #include <array>
+#include <cassert>
 #include <string>
 
 #include "deduction_guides_sfinae_checks.h"
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
index 684661aeab8fc..82f4f2de760c9 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
@@ -13,6 +13,7 @@
 
 #include <string>
 #include <cassert>
+#include <cstdint>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
index c183def9ee75f..b2306807fcf7b 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
@@ -11,13 +11,14 @@
 // template<class InputIterator>
 //   basic_string& assign(InputIterator first, InputIterator last); // constexpr since C++20
 
-#include <string>
 #include <cassert>
+#include <cstdint>
+#include <string>
 
+#include "asan_testing.h"
+#include "min_allocator.h"
 #include "test_macros.h"
 #include "test_iterators.h"
-#include "min_allocator.h"
-#include "asan_testing.h"
 
 template <class S, class It>
 TEST_CONSTEXPR_CXX20 void test(S s, It first, It last, S expected) {
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
index 060216e7a82b3..e228ccac20574 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
@@ -11,13 +11,14 @@
 // template<class InputIterator>
 //   iterator insert(const_iterator p, InputIterator first, InputIterator last); // constexpr since C++20
 
-#include <string>
 #include <cassert>
+#include <cstdint>
+#include <string>
 
-#include "test_macros.h"
-#include "test_iterators.h"
-#include "min_allocator.h"
 #include "asan_testing.h"
+#include "min_allocator.h"
+#include "test_iterators.h"
+#include "test_macros.h"
 
 template <class S, class It>
 TEST_CONSTEXPR_CXX20 void test(S s, typename S::difference_type pos, It first, It last, S expected) {
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
index c1ca532a5f910..ba91e0bd56f00 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
@@ -15,6 +15,7 @@
 #include <string>
 #include <iterator>
 #include <cassert>
+#include <cstdint>
 
 #include "test_macros.h"
 #include "min_allocator.h"
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
index f6f407b7876fc..4e6d97203b6b8 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
@@ -15,6 +15,7 @@
 #include <string_view>
 #include <cassert>
 #include <iterator>
+#include <type_traits>
 
 #include "make_string.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pass.cpp
index b9209ac2c89b6..6564e34fabd29 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pass.cpp
@@ -35,6 +35,7 @@
 #include <cassert>
 #include <cstddef>
 #include <functional>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pred.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pred.pass.cpp
index d616301767ede..d23e10b0baa5f 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pred.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/hash.pred.pass.cpp
@@ -35,6 +35,7 @@
 #include <cassert>
 #include <cstddef>
 #include <functional>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/pred.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/pred.pass.cpp
index 396e2847928b0..2f7854157e8de 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/pred.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bm/pred.pass.cpp
@@ -34,6 +34,7 @@
 #include <algorithm>
 #include <cassert>
 #include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pass.cpp
index 19f5710819c46..a0824b21c9e02 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pass.cpp
@@ -34,6 +34,7 @@
 #include <cassert>
 #include <cstddef>
 #include <functional>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pred.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pred.pass.cpp
index 3d29a05efd40c..e1c961bcc4ce2 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pred.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/hash.pred.pass.cpp
@@ -34,6 +34,7 @@
 #include <cassert>
 #include <cstddef>
 #include <functional>
+#include <iterator>
 
 #include "test_iterators.h"
 
diff --git a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/pred.pass.cpp b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/pred.pass.cpp
index 9f6dcbd2f2423..7da2f904a1d30 100644
--- a/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/pred.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.search/func.search.bmh/pred.pass.cpp
@@ -31,8 +31,9 @@
 // };
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <iterator>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
index 40fbf22695909..097547cc28d9d 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
@@ -18,6 +18,7 @@
 #include <cassert>
 #include <memory>
 #include <ranges>
+#include <type_traits>
 
 #include "../buffer.h"
 #include "../counted.h"
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct_n.pass.cpp
index 58ee06aaa819d..95a664a1285b4 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct_n.pass.cpp
@@ -16,6 +16,7 @@
 #include <memory>
 #include <cstdlib>
 #include <cassert>
+#include <type_traits>
 
 #include "test_macros.h"
 #include "test_iterators.h"
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
index 4742aefcdb5ad..ac8f8f1173fd1 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
@@ -18,6 +18,7 @@
 #include <cassert>
 #include <memory>
 #include <ranges>
+#include <type_traits>
 
 #include "../buffer.h"
 #include "../counted.h"
diff --git a/libcxx/test/support/module.modulemap b/libcxx/test/support/module.modulemap
index 75ae8c4221ae0..0af147d75ee5d 100644
--- a/libcxx/test/support/module.modulemap
+++ b/libcxx/test/support/module.modulemap
@@ -6,5 +6,6 @@ module test_config {
 module test {
   module double_move_tracker    { header "double_move_tracker.h" }
   module test_allocator         { header "test_allocator.h" }
+  module test_iterators         { header "test_iterators.h" }
   module type_algorithms        { header "type_algorithms.h" }
 }
diff --git a/libcxx/test/support/test.support/test_proxy.pass.cpp b/libcxx/test/support/test.support/test_proxy.pass.cpp
index 668caf175add3..7c40fa4c2bb83 100644
--- a/libcxx/test/support/test.support/test_proxy.pass.cpp
+++ b/libcxx/test/support/test.support/test_proxy.pass.cpp
@@ -12,6 +12,8 @@
 #include "test_iterators.h"
 
 #include <cassert>
+#include <iterator>
+#include <ranges>
 
 constexpr void testProxy() {
   // constructor value
diff --git a/libcxx/test/support/test_range.h b/libcxx/test/support/test_range.h
index 4efa26f266475..315c443ab3c24 100644
--- a/libcxx/test/support/test_range.h
+++ b/libcxx/test/support/test_range.h
@@ -16,6 +16,7 @@
 #include <type_traits>
 
 #include "test_iterators.h"
+#include "test_macros.h"
 
 #if TEST_STD_VER < 17
 #  error "test/support/test_range.h" can only be included in builds supporting ranges



More information about the libcxx-commits mailing list