diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -1093,7 +1093,6 @@ #include <__debug> #include #include -#include #include #include #include @@ -1238,6 +1237,9 @@ #include <__algorithm/unwrap_iter.h> #include <__algorithm/upper_bound.h> +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/array b/libcxx/include/array --- a/libcxx/include/array +++ b/libcxx/include/array @@ -119,11 +119,23 @@ #include <__utility/integer_sequence.h> #include <__utility/move.h> #include <__utility/unreachable.h> -#include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [array.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/bitset b/libcxx/include/bitset --- a/libcxx/include/bitset +++ b/libcxx/include/bitset @@ -120,11 +120,13 @@ #include <__functional/unary_function.h> #include #include -#include #include -#include #include +// standard-mandated includes +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/coroutine b/libcxx/include/coroutine --- a/libcxx/include/coroutine +++ b/libcxx/include/coroutine @@ -46,6 +46,9 @@ #include <__coroutine/trivial_awaitables.h> #include +// standard-mandated includes +#include + #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header #endif diff --git a/libcxx/include/deque b/libcxx/include/deque --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -180,13 +180,24 @@ #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/swap.h> -#include -#include #include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [deque.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/filesystem b/libcxx/include/filesystem --- a/libcxx/include/filesystem +++ b/libcxx/include/filesystem @@ -257,9 +257,11 @@ #include <__filesystem/recursive_directory_iterator.h> #include <__filesystem/space_info.h> #include <__filesystem/u8path.h> -#include #include +// standard-mandated includes +#include + #if defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY) # error "The library is not supported since libc++ has been configured without support for a filesystem." #endif diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -189,12 +189,24 @@ #include <__iterator/move_iterator.h> #include <__iterator/next.h> #include <__utility/forward.h> -#include #include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [forward.list.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/ios b/libcxx/include/ios --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -220,10 +220,12 @@ #include <__ios/fpos.h> #include <__locale> #include <__utility/swap.h> -#include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) #include // for __xindex_ #endif diff --git a/libcxx/include/iostream b/libcxx/include/iostream --- a/libcxx/include/iostream +++ b/libcxx/include/iostream @@ -35,11 +35,13 @@ #include <__assert> // all public C++ headers provide the assertion handler #include <__config> +#include + +// standard-mandated includes #include #include #include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/list b/libcxx/include/list --- a/libcxx/include/list +++ b/libcxx/include/list @@ -197,12 +197,24 @@ #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/swap.h> -#include #include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [list.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -542,12 +542,23 @@ #include <__tree> #include <__utility/forward.h> #include <__utility/swap.h> -#include -#include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [associative.map.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/memory b/libcxx/include/memory --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -859,7 +859,6 @@ #include <__memory/uninitialized_algorithms.h> #include <__memory/unique_ptr.h> #include <__memory/uses_allocator.h> -#include #include #include #include @@ -871,6 +870,9 @@ #include #include +// standard-mandated includes +#include + #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR) # include <__memory/auto_ptr.h> #endif diff --git a/libcxx/include/optional b/libcxx/include/optional --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -171,13 +171,15 @@ #include <__utility/in_place.h> #include <__utility/move.h> #include <__utility/swap.h> -#include #include #include #include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/queue b/libcxx/include/queue --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -226,12 +226,15 @@ #include <__iterator/iterator_traits.h> #include <__memory/uses_allocator.h> #include <__utility/forward.h> -#include #include #include #include #include +// standard-mandated includes +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/random b/libcxx/include/random --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1716,9 +1716,11 @@ #include <__random/uniform_random_bit_generator.h> #include <__random/uniform_real_distribution.h> #include <__random/weibull_distribution.h> -#include #include +// standard-mandated includes +#include + #include // for backward compatibility; TODO remove it #include // for backward compatibility; TODO remove it #include // for backward compatibility; TODO remove it diff --git a/libcxx/include/regex b/libcxx/include/regex --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -766,21 +766,31 @@ #include <__algorithm/search.h> #include <__assert> // all public C++ headers provide the assertion handler #include <__config> -#include <__iterator/access.h> #include <__iterator/back_insert_iterator.h> #include <__iterator/wrap_iter.h> #include <__locale> #include <__utility/move.h> #include <__utility/swap.h> -#include #include -#include #include #include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [re.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/set b/libcxx/include/set --- a/libcxx/include/set +++ b/libcxx/include/set @@ -483,9 +483,20 @@ #include <__node_handle> #include <__tree> #include <__utility/forward.h> +#include + +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [associative.set.syn] #include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/span b/libcxx/include/span --- a/libcxx/include/span +++ b/libcxx/include/span @@ -132,9 +132,7 @@ #include <__debug> #include <__fwd/span.h> #include <__iterator/concepts.h> -#include <__iterator/data.h> #include <__iterator/iterator_traits.h> -#include <__iterator/size.h> #include <__iterator/wrap_iter.h> #include <__memory/pointer_traits.h> #include <__ranges/concepts.h> @@ -149,6 +147,15 @@ #include // for remove_cv, etc #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/stack b/libcxx/include/stack --- a/libcxx/include/stack +++ b/libcxx/include/stack @@ -107,6 +107,10 @@ #include #include +// standard-mandated includes +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -539,12 +539,10 @@ #include <__utility/swap.h> #include <__utility/unreachable.h> #include -#include #include #include // EOF #include #include -#include #include #include #include @@ -557,6 +555,19 @@ # include #endif +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [string.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/string_view b/libcxx/include/string_view --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -212,13 +212,24 @@ #include <__ranges/enable_view.h> #include <__ranges/size.h> #include <__string/char_traits.h> -#include #include #include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [string.view.synop] +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/system_error b/libcxx/include/system_error --- a/libcxx/include/system_error +++ b/libcxx/include/system_error @@ -147,12 +147,14 @@ #include <__errc> #include <__functional/hash.h> #include <__functional/unary_function.h> -#include #include #include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/thread b/libcxx/include/thread --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -98,6 +98,9 @@ #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/tuple b/libcxx/include/tuple --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -179,11 +179,13 @@ #include <__utility/pair.h> #include <__utility/piecewise_construct.h> #include <__utility/swap.h> -#include #include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -47,10 +47,12 @@ #include <__assert> // all public C++ headers provide the assertion handler #include <__config> #include <__functional/unary_function.h> -#include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -527,11 +527,23 @@ #include <__memory/addressof.h> #include <__node_handle> #include <__utility/forward.h> -#include #include #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [unord.map.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -472,9 +472,21 @@ #include <__memory/addressof.h> #include <__node_handle> #include <__utility/forward.h> -#include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [unord.set.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/utility b/libcxx/include/utility --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -240,11 +240,13 @@ #include <__utility/to_underlying.h> #include <__utility/transaction.h> #include <__utility/unreachable.h> -#include -#include #include #include +// standard-mandated includes +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/valarray b/libcxx/include/valarray --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -357,10 +357,12 @@ #include <__utility/swap.h> #include #include -#include #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/variant b/libcxx/include/variant --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -211,7 +211,6 @@ #include <__utility/move.h> #include <__utility/swap.h> #include <__variant/monostate.h> -#include #include #include #include @@ -220,6 +219,9 @@ #include #include +// standard-mandated includes +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/vector b/libcxx/include/vector --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -296,10 +296,8 @@ #include <__utility/move.h> #include <__utility/swap.h> #include -#include #include #include -#include #include // for forward declaration of vector #include #include @@ -307,6 +305,19 @@ #include #include +// standard-mandated includes + +// [iterator.range] +#include <__iterator/access.h> +#include <__iterator/data.h> +#include <__iterator/empty.h> +#include <__iterator/reverse_access.h> +#include <__iterator/size.h> + +// [vector.syn] +#include +#include + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif