diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -52,6 +52,10 @@ ```` header. The associated macro ``_LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM`` has also been removed. +- Transitive includes of ```` have been removed. If you see compiler errors + related to missing declarations inside namespace ``std`` when updating libc++, + you are probably missing ``#include `` in a file where you use algorithms. + ABI Changes ----------- diff --git a/libcxx/include/__bit_reference b/libcxx/include/__bit_reference --- a/libcxx/include/__bit_reference +++ b/libcxx/include/__bit_reference @@ -10,9 +10,13 @@ #ifndef _LIBCPP___BIT_REFERENCE #define _LIBCPP___BIT_REFERENCE +#include <__algorithm/min.h> #include <__bits> #include <__config> -#include +#include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> +#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__filesystem/path.h b/libcxx/include/__filesystem/path.h --- a/libcxx/include/__filesystem/path.h +++ b/libcxx/include/__filesystem/path.h @@ -10,6 +10,8 @@ #ifndef _LIBCPP___FILESYSTEM_PATH_H #define _LIBCPP___FILESYSTEM_PATH_H +#include <__algorithm/replace.h> +#include <__algorithm/replace_copy.h> #include <__availability> #include <__config> #include <__iterator/back_insert_iterator.h> diff --git a/libcxx/include/__format/formatter.h b/libcxx/include/__format/formatter.h --- a/libcxx/include/__format/formatter.h +++ b/libcxx/include/__format/formatter.h @@ -12,6 +12,7 @@ #include <__algorithm/copy.h> #include <__algorithm/fill_n.h> +#include <__algorithm/transform.h> #include <__availability> #include <__config> #include <__format/format_error.h> diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table --- a/libcxx/include/__hash_table +++ b/libcxx/include/__hash_table @@ -10,10 +10,12 @@ #ifndef _LIBCPP__HASH_TABLE #define _LIBCPP__HASH_TABLE +#include <__algorithm/max.h> +#include <__algorithm/min.h> #include <__bits> // __libcpp_clz #include <__config> #include <__debug> -#include +#include <__functional/hash.h> #include #include #include diff --git a/libcxx/include/__split_buffer b/libcxx/include/__split_buffer --- a/libcxx/include/__split_buffer +++ b/libcxx/include/__split_buffer @@ -2,9 +2,17 @@ #ifndef _LIBCPP_SPLIT_BUFFER #define _LIBCPP_SPLIT_BUFFER +#include <__algorithm/max.h> +#include <__algorithm/move.h> +#include <__algorithm/move_backward.h> #include <__config> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/move_iterator.h> +#include <__memory/allocator.h> +#include <__memory/compressed_pair.h> #include <__utility/forward.h> -#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__tree b/libcxx/include/__tree --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -10,9 +10,9 @@ #ifndef _LIBCPP___TREE #define _LIBCPP___TREE +#include <__algorithm/min.h> #include <__config> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/include/array b/libcxx/include/array --- a/libcxx/include/array +++ b/libcxx/include/array @@ -108,11 +108,14 @@ */ +#include <__algorithm/equal.h> +#include <__algorithm/fill_n.h> +#include <__algorithm/lexicographical_compare.h> +#include <__algorithm/swap_ranges.h> #include <__config> #include <__debug> #include <__tuple> #include <__utility/unreachable.h> -#include #include #include #include diff --git a/libcxx/include/bitset b/libcxx/include/bitset --- a/libcxx/include/bitset +++ b/libcxx/include/bitset @@ -112,8 +112,10 @@ */ +#include <__algorithm/fill.h> #include <__bit_reference> #include <__config> +#include <__functional/unary_function.h> #include #include #include diff --git a/libcxx/include/deque b/libcxx/include/deque --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -160,12 +160,20 @@ */ +#include <__algorithm/copy.h> +#include <__algorithm/copy_backward.h> +#include <__algorithm/equal.h> +#include <__algorithm/fill_n.h> +#include <__algorithm/lexicographical_compare.h> +#include <__algorithm/min.h> +#include <__algorithm/remove.h> +#include <__algorithm/remove_if.h> +#include <__algorithm/unwrap_iter.h> #include <__config> #include <__debug> #include <__iterator/iterator_traits.h> #include <__split_buffer> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/include/experimental/functional b/libcxx/include/experimental/functional --- a/libcxx/include/experimental/functional +++ b/libcxx/include/experimental/functional @@ -62,7 +62,6 @@ #include <__debug> #include <__memory/uses_allocator.h> -#include #include #include #include diff --git a/libcxx/include/experimental/simd b/libcxx/include/experimental/simd --- a/libcxx/include/experimental/simd +++ b/libcxx/include/experimental/simd @@ -649,7 +649,6 @@ */ -#include #include #include #include diff --git a/libcxx/include/ext/hash_map b/libcxx/include/ext/hash_map --- a/libcxx/include/ext/hash_map +++ b/libcxx/include/ext/hash_map @@ -201,6 +201,7 @@ */ +#include <__algorithm/is_permutation.h> #include <__config> #include <__hash_table> #include diff --git a/libcxx/include/ext/hash_set b/libcxx/include/ext/hash_set --- a/libcxx/include/ext/hash_set +++ b/libcxx/include/ext/hash_set @@ -192,6 +192,7 @@ */ +#include <__algorithm/is_permutation.h> #include <__config> #include <__hash_table> #include diff --git a/libcxx/include/format b/libcxx/include/format --- a/libcxx/include/format +++ b/libcxx/include/format @@ -122,6 +122,7 @@ // Enable the contents of the header only when libc++ was built with LIBCXX_ENABLE_INCOMPLETE_FEATURES. #if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) +#include <__algorithm/clamp.h> #include <__config> #include <__debug> #include <__format/format_arg.h> diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -179,9 +179,11 @@ */ +#include <__algorithm/comp.h> +#include <__algorithm/lexicographical_compare.h> +#include <__algorithm/min.h> #include <__config> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/include/fstream b/libcxx/include/fstream --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -179,6 +179,7 @@ */ +#include <__algorithm/max.h> #include <__availability> #include <__config> #include <__debug> diff --git a/libcxx/include/list b/libcxx/include/list --- a/libcxx/include/list +++ b/libcxx/include/list @@ -180,10 +180,13 @@ */ +#include <__algorithm/comp.h> +#include <__algorithm/equal.h> +#include <__algorithm/lexicographical_compare.h> +#include <__algorithm/min.h> #include <__config> #include <__debug> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/include/locale b/libcxx/include/locale --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -187,10 +187,14 @@ */ +#include <__algorithm/equal.h> +#include <__algorithm/find.h> +#include <__algorithm/max.h> +#include <__algorithm/reverse.h> +#include <__algorithm/unwrap_iter.h> #include <__config> #include <__debug> #include <__locale> -#include #ifndef __APPLE__ # include #endif diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -528,6 +528,8 @@ */ +#include <__algorithm/equal.h> +#include <__algorithm/lexicographical_compare.h> #include <__config> #include <__debug> #include <__functional/is_transparent.h> diff --git a/libcxx/include/queue b/libcxx/include/queue --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -217,11 +217,13 @@ */ +#include <__algorithm/make_heap.h> +#include <__algorithm/pop_heap.h> +#include <__algorithm/push_heap.h> #include <__config> #include <__iterator/iterator_traits.h> #include <__memory/uses_allocator.h> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/include/random b/libcxx/include/random --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1717,7 +1717,6 @@ #include #include -#include // for backward compatibility; TODO remove it #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 @@ -762,6 +762,7 @@ } // std */ +#include <__algorithm/find.h> #include <__config> #include <__debug> #include <__iterator/wrap_iter.h> diff --git a/libcxx/include/set b/libcxx/include/set --- a/libcxx/include/set +++ b/libcxx/include/set @@ -471,6 +471,8 @@ */ +#include <__algorithm/equal.h> +#include <__algorithm/lexicographical_compare.h> #include <__config> #include <__debug> #include <__functional/is_transparent.h> diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -518,11 +518,14 @@ */ +#include <__algorithm/max.h> +#include <__algorithm/min.h> +#include <__algorithm/remove.h> +#include <__algorithm/remove_if.h> #include <__config> #include <__debug> #include <__ios/fpos.h> #include <__iterator/wrap_iter.h> -#include #include #include // EOF #include diff --git a/libcxx/include/string_view b/libcxx/include/string_view --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -195,6 +195,7 @@ */ +#include <__algorithm/min.h> #include <__config> #include <__debug> #include <__ranges/concepts.h> @@ -203,7 +204,6 @@ #include <__ranges/enable_view.h> #include <__ranges/size.h> #include <__string> -#include #include #include #include diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -514,6 +514,7 @@ */ +#include <__algorithm/is_permutation.h> #include <__config> #include <__debug> #include <__functional/is_transparent.h> diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -459,6 +459,7 @@ */ +#include <__algorithm/is_permutation.h> #include <__config> #include <__debug> #include <__functional/is_transparent.h> diff --git a/libcxx/include/valarray b/libcxx/include/valarray --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -341,8 +341,14 @@ */ +#include <__algorithm/copy.h> +#include <__algorithm/count.h> +#include <__algorithm/fill.h> +#include <__algorithm/max_element.h> +#include <__algorithm/min.h> +#include <__algorithm/min_element.h> +#include <__algorithm/unwrap_iter.h> #include <__config> -#include #include #include #include diff --git a/libcxx/include/vector b/libcxx/include/vector --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -271,14 +271,22 @@ */ +#include <__algorithm/copy.h> +#include <__algorithm/equal.h> +#include <__algorithm/fill_n.h> +#include <__algorithm/lexicographical_compare.h> +#include <__algorithm/remove.h> +#include <__algorithm/remove_if.h> +#include <__algorithm/rotate.h> +#include <__algorithm/unwrap_iter.h> #include <__bit_reference> #include <__config> #include <__debug> +#include <__functional/hash.h> #include <__iterator/iterator_traits.h> #include <__iterator/wrap_iter.h> #include <__split_buffer> #include <__utility/forward.h> -#include #include #include #include diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp --- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp +++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp @@ -14,6 +14,7 @@ // -> forward_list::value_type, Allocator>; // +#include #include #include #include diff --git a/libcxx/test/std/containers/sequences/list/list.ops/sort.pass.cpp b/libcxx/test/std/containers/sequences/list/list.ops/sort.pass.cpp --- a/libcxx/test/std/containers/sequences/list/list.ops/sort.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/list.ops/sort.pass.cpp @@ -10,6 +10,7 @@ // void sort(); +#include #include #include #include diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp @@ -26,6 +26,7 @@ #include +#include #include #include #include diff --git a/libcxxabi/src/demangle/Utility.h b/libcxxabi/src/demangle/Utility.h --- a/libcxxabi/src/demangle/Utility.h +++ b/libcxxabi/src/demangle/Utility.h @@ -17,6 +17,7 @@ #define DEMANGLE_UTILITY_H #include "StringView.h" +#include #include #include #include diff --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp --- a/libcxxabi/test/test_demangle.pass.cpp +++ b/libcxxabi/test/test_demangle.pass.cpp @@ -15,6 +15,7 @@ // UNSUPPORTED: use_system_cxx_lib && target={{.+}}-apple-macosx11.0 #include "support/timer.h" +#include #include #include #include