diff --git a/libcxx/include/__algorithm/pstl_any_all_none_of.h b/libcxx/include/__algorithm/pstl_any_all_none_of.h --- a/libcxx/include/__algorithm/pstl_any_all_none_of.h +++ b/libcxx/include/__algorithm/pstl_any_all_none_of.h @@ -9,6 +9,7 @@ #ifndef _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H #define _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H +#include <__algorithm/pstl_backend.h> #include <__algorithm/pstl_find.h> #include <__algorithm/pstl_frontend_dispatch.h> #include <__config> @@ -16,6 +17,7 @@ #include <__type_traits/enable_if.h> #include <__type_traits/is_execution_policy.h> #include <__type_traits/remove_cvref.h> +#include <__utility/move.h> #include <__utility/terminate_on_exception.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/pstl_copy.h b/libcxx/include/__algorithm/pstl_copy.h --- a/libcxx/include/__algorithm/pstl_copy.h +++ b/libcxx/include/__algorithm/pstl_copy.h @@ -14,9 +14,11 @@ #include <__config> #include <__functional/identity.h> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_constant_evaluated.h> #include <__type_traits/is_execution_policy.h> #include <__type_traits/is_trivially_copyable.h> +#include <__type_traits/remove_cvref.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/pstl_fill.h b/libcxx/include/__algorithm/pstl_fill.h --- a/libcxx/include/__algorithm/pstl_fill.h +++ b/libcxx/include/__algorithm/pstl_fill.h @@ -10,12 +10,15 @@ #define _LIBCPP___ALGORITHM_PSTL_FILL_H #include <__algorithm/fill_n.h> +#include <__algorithm/pstl_backend.h> #include <__algorithm/pstl_for_each.h> #include <__algorithm/pstl_frontend_dispatch.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_execution_policy.h> #include <__type_traits/remove_cvref.h> +#include <__utility/move.h> #include <__utility/terminate_on_exception.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/pstl_find.h b/libcxx/include/__algorithm/pstl_find.h --- a/libcxx/include/__algorithm/pstl_find.h +++ b/libcxx/include/__algorithm/pstl_find.h @@ -15,8 +15,10 @@ #include <__algorithm/pstl_frontend_dispatch.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_execution_policy.h> #include <__type_traits/remove_cvref.h> +#include <__utility/move.h> #include <__utility/terminate_on_exception.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/pstl_for_each.h b/libcxx/include/__algorithm/pstl_for_each.h --- a/libcxx/include/__algorithm/pstl_for_each.h +++ b/libcxx/include/__algorithm/pstl_for_each.h @@ -15,9 +15,12 @@ #include <__algorithm/pstl_frontend_dispatch.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_execution_policy.h> #include <__type_traits/remove_cvref.h> #include <__type_traits/void_t.h> +#include <__utility/forward.h> +#include <__utility/move.h> #include <__utility/terminate_on_exception.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/pstl_transform.h b/libcxx/include/__algorithm/pstl_transform.h --- a/libcxx/include/__algorithm/pstl_transform.h +++ b/libcxx/include/__algorithm/pstl_transform.h @@ -12,7 +12,10 @@ #include <__algorithm/pstl_backend.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> #include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/move.h> #include <__utility/terminate_on_exception.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__functional/invoke.h b/libcxx/include/__functional/invoke.h --- a/libcxx/include/__functional/invoke.h +++ b/libcxx/include/__functional/invoke.h @@ -12,6 +12,7 @@ #include <__config> #include <__type_traits/invoke.h> +#include <__type_traits/is_void.h> #include <__utility/forward.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h b/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h --- a/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +++ b/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h @@ -13,6 +13,7 @@ #ifndef _LIBCPP___LOCALE_LOCALE_BASE_API_BSD_LOCALE_FALLBACKS_H #define _LIBCPP___LOCALE_LOCALE_BASE_API_BSD_LOCALE_FALLBACKS_H +#include <__locale> #include <__locale_dir/locale_base_api/locale_guard.h> #include #include diff --git a/libcxx/include/__random/discrete_distribution.h b/libcxx/include/__random/discrete_distribution.h --- a/libcxx/include/__random/discrete_distribution.h +++ b/libcxx/include/__random/discrete_distribution.h @@ -14,6 +14,7 @@ #include <__random/is_valid.h> #include <__random/uniform_real_distribution.h> #include +#include #include #include #include diff --git a/libcxx/include/__thread/poll_with_backoff.h b/libcxx/include/__thread/poll_with_backoff.h --- a/libcxx/include/__thread/poll_with_backoff.h +++ b/libcxx/include/__thread/poll_with_backoff.h @@ -13,6 +13,7 @@ #include <__availability> #include <__chrono/duration.h> #include <__chrono/high_resolution_clock.h> +#include <__chrono/time_point.h> #include <__config> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__threading_support b/libcxx/include/__threading_support --- a/libcxx/include/__threading_support +++ b/libcxx/include/__threading_support @@ -34,6 +34,13 @@ #elif !defined(_LIBCPP_HAS_NO_THREADS) #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +// Some platforms require in order for +// PTHREAD_COND_INITIALIZER to be expanded. Normally that would come +// in via , but it's a non-modular header on those platforms, +// so libc++'s usually absorbs atomic_wide_counter.h into the +// module with and makes atomic_wide_counter.h invisible. +// Include here to work around that. +# include # include # include #elif defined(_LIBCPP_HAS_THREAD_API_C11) diff --git a/libcxx/include/experimental/simd b/libcxx/include/experimental/simd --- a/libcxx/include/experimental/simd +++ b/libcxx/include/experimental/simd @@ -652,6 +652,10 @@ #include <__assert> // all public C++ headers provide the assertion handler #include <__functional/operations.h> +#include <__type_traits/is_unsigned.h> +#include <__type_traits/is_volatile.h> +#include <__type_traits/remove_const.h> +#include <__utility/declval.h> #include #include #include diff --git a/libcxx/include/experimental/type_traits b/libcxx/include/experimental/type_traits --- a/libcxx/include/experimental/type_traits +++ b/libcxx/include/experimental/type_traits @@ -73,6 +73,7 @@ #if _LIBCPP_STD_VER >= 14 +#include <__type_traits/nat.h> #include #include diff --git a/libcxx/include/future b/libcxx/include/future --- a/libcxx/include/future +++ b/libcxx/include/future @@ -379,9 +379,11 @@ #include <__system_error/error_category.h> #include <__system_error/error_code.h> #include <__system_error/error_condition.h> +#include <__type_traits/add_lvalue_reference.h> #include <__type_traits/aligned_storage.h> #include <__type_traits/alignment_of.h> #include <__type_traits/strip_signature.h> +#include <__type_traits/underlying_type.h> #include <__utility/auto_cast.h> #include <__utility/forward.h> #include <__utility/move.h> diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -555,6 +555,7 @@ #include <__node_handle> #include <__tree> #include <__type_traits/is_allocator.h> +#include <__type_traits/type_identity.h> #include <__utility/forward.h> #include <__utility/piecewise_construct.h> #include <__utility/swap.h> diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -249,14 +249,24 @@ module clamp { private header "__algorithm/clamp.h" } module comp { private header "__algorithm/comp.h" } module comp_ref_type { private header "__algorithm/comp_ref_type.h" } - module copy { private header "__algorithm/copy.h" } + module copy { + private header "__algorithm/copy.h" + export algorithm.__algorithm.copy_move_common + } module copy_backward { private header "__algorithm/copy_backward.h" } module copy_if { private header "__algorithm/copy_if.h" } - module copy_move_common { private header "__algorithm/copy_move_common.h" } + module copy_move_common { + private header "__algorithm/copy_move_common.h" + export type_traits.is_copy_constructible + export type_traits.is_trivially_copyable + } module copy_n { private header "__algorithm/copy_n.h" } module count { private header "__algorithm/count.h" } module count_if { private header "__algorithm/count_if.h" } - module equal { private header "__algorithm/equal.h" } + module equal { + private header "__algorithm/equal.h" + export algorithm.__algorithm.unwrap_iter + } module equal_range { private header "__algorithm/equal_range.h" } module fill { private header "__algorithm/fill.h" } module fill_n { private header "__algorithm/fill_n.h" } @@ -270,12 +280,27 @@ module generate { private header "__algorithm/generate.h" } module generate_n { private header "__algorithm/generate_n.h" } module half_positive { private header "__algorithm/half_positive.h" } - module in_found_result { private header "__algorithm/in_found_result.h" } + module in_found_result { + private header "__algorithm/in_found_result.h" + export utility.__utility.move + } module in_fun_result { private header "__algorithm/in_fun_result.h" } - module in_in_out_result { private header "__algorithm/in_in_out_result.h" } - module in_in_result { private header "__algorithm/in_in_result.h" } - module in_out_out_result { private header "__algorithm/in_out_out_result.h" } - module in_out_result { private header "__algorithm/in_out_result.h" } + module in_in_out_result { + private header "__algorithm/in_in_out_result.h" + export utility.__utility.move + } + module in_in_result { + private header "__algorithm/in_in_result.h" + export utility.__utility.move + } + module in_out_out_result { + private header "__algorithm/in_out_out_result.h" + export utility.__utility.move + } + module in_out_result { + private header "__algorithm/in_out_result.h" + export utility.__utility.move + } module includes { private header "__algorithm/includes.h" } module inplace_merge { private header "__algorithm/inplace_merge.h" } module is_heap { private header "__algorithm/is_heap.h" } @@ -301,7 +326,10 @@ module merge { private header "__algorithm/merge.h" } module min { private header "__algorithm/min.h" } module min_element { private header "__algorithm/min_element.h" } - module min_max_result { private header "__algorithm/min_max_result.h" } + module min_max_result { + private header "__algorithm/min_max_result.h" + export utility.__utility.move + } module minmax { private header "__algorithm/minmax.h" export * @@ -320,32 +348,47 @@ module partition_point { private header "__algorithm/partition_point.h" } module pop_heap { private header "__algorithm/pop_heap.h" } module prev_permutation { private header "__algorithm/prev_permutation.h" } + module pstl_backend { + private header "__algorithm/pstl_backend.h" + export * + } module pstl_backends_cpu_backend { private header "__algorithm/pstl_backends/cpu_backend.h" export * } module pstl_backends_cpu_backends_any_of { private header "__algorithm/pstl_backends/cpu_backends/any_of.h" + export algorithm.__algorithm.pstl_backends_cpu_backends_backend } module pstl_backends_cpu_backends_backend { private header "__algorithm/pstl_backends/cpu_backends/backend.h" export * } - module pstl_backends_cpu_backends_fill { private header "__algorithm/pstl_backends/cpu_backends/fill.h" } + module pstl_backends_cpu_backends_fill { + private header "__algorithm/pstl_backends/cpu_backends/fill.h" + export algorithm.__algorithm.pstl_backends_cpu_backends_backend + } module pstl_backends_cpu_backends_find_if { private header "__algorithm/pstl_backends/cpu_backends/find_if.h" + export algorithm.__algorithm.pstl_backends_cpu_backends_backend } module pstl_backends_cpu_backends_for_each { private header "__algorithm/pstl_backends/cpu_backends/for_each.h" + export algorithm.__algorithm.pstl_backends_cpu_backends_backend } module pstl_backends_cpu_backends_serial { - private header "__algorithm/pstl_backends/cpu_backends/serial.h" + private textual header "__algorithm/pstl_backends/cpu_backends/serial.h" } module pstl_backends_cpu_backends_thread { - private header "__algorithm/pstl_backends/cpu_backends/thread.h" + private textual header "__algorithm/pstl_backends/cpu_backends/thread.h" } module pstl_backends_cpu_backends_transform { private header "__algorithm/pstl_backends/cpu_backends/transform.h" + export algorithm.__algorithm.pstl_backends_cpu_backends_backend + } + module pstl_frontend_dispatch { + private header "__algorithm/pstl_frontend_dispatch.h" + export utility.__utility.forward } module push_heap { private header "__algorithm/push_heap.h" } module ranges_adjacent_find { private header "__algorithm/ranges_adjacent_find.h" } @@ -353,6 +396,7 @@ module ranges_any_of { private header "__algorithm/ranges_any_of.h" } module ranges_binary_search { private header "__algorithm/ranges_binary_search.h" + export algorithm.__algorithm.iterator_operations export functional.__functional.ranges_operations } module ranges_clamp { @@ -492,12 +536,10 @@ } module ranges_partial_sort { private header "__algorithm/ranges_partial_sort.h" - export algorithm.__algorithm.in_out_result export functional.__functional.ranges_operations } module ranges_partial_sort_copy { private header "__algorithm/ranges_partial_sort_copy.h" - export algorithm.__algorithm.in_out_out_result export functional.__functional.ranges_operations } module ranges_partition { private header "__algorithm/ranges_partition.h" } @@ -616,7 +658,10 @@ module rotate { private header "__algorithm/rotate.h" } module rotate_copy { private header "__algorithm/rotate_copy.h" } module sample { private header "__algorithm/sample.h" } - module search { private header "__algorithm/search.h" } + module search { + private header "__algorithm/search.h" + export utility.__utility.pair + } module search_n { private header "__algorithm/search_n.h" } module set_difference { private header "__algorithm/set_difference.h" } module set_intersection { private header "__algorithm/set_intersection.h" } @@ -753,7 +798,6 @@ private header "__chrono/high_resolution_clock.h" export steady_clock export system_clock - export time_point } module literals { private header "__chrono/literals.h" } module month { private header "__chrono/month.h" } @@ -818,11 +862,17 @@ module class_or_enum { private header "__concepts/class_or_enum.h" } module common_reference_with { private header "__concepts/common_reference_with.h" } module common_with { private header "__concepts/common_with.h" } - module constructible { private header "__concepts/constructible.h" } + module constructible { + private header "__concepts/constructible.h" + export concepts.__concepts.destructible + } module convertible_to { private header "__concepts/convertible_to.h" } module copyable { private header "__concepts/copyable.h" } module derived_from { private header "__concepts/derived_from.h" } - module destructible { private header "__concepts/destructible.h" } + module destructible { + private header "__concepts/destructible.h" + export type_traits.is_nothrow_destructible + } module different_from { private header "__concepts/different_from.h" } module equality_comparable { private header "__concepts/equality_comparable.h" @@ -899,7 +949,6 @@ module operations { private header "__filesystem/operations.h" } module path { private header "__filesystem/path.h" - export functional.__functional.hash export functional.__functional.unary_function } module path_iterator { private header "__filesystem/path_iterator.h" } @@ -926,9 +975,7 @@ module format_args { private header "__format/format_args.h" } module format_context { private header "__format/format_context.h" - export optional - export locale - export __locale + export * } module format_error { private header "__format/format_error.h" } module format_functions { @@ -955,7 +1002,10 @@ module parser_std_format_spec { private header "__format/parser_std_format_spec.h" } module range_default_formatter { private header "__format/range_default_formatter.h" } module range_formatter { private header "__format/range_formatter.h" } - module unicode { private header "__format/unicode.h" } + module unicode { + private header "__format/unicode.h" + export format.__format.extended_grapheme_cluster_table + } module width_estimation_table { private header "__format/width_estimation_table.h" } } } @@ -984,16 +1034,26 @@ module bind_front { private header "__functional/bind_front.h" } module binder1st { private header "__functional/binder1st.h" } module binder2nd { private header "__functional/binder2nd.h" } - module boyer_moore_searcher { private header "__functional/boyer_moore_searcher.h" } - module compose { private header "__functional/compose.h" } + module boyer_moore_searcher { + private header "__functional/boyer_moore_searcher.h" + export memory.__memory.shared_ptr + } + module compose { + private header "__functional/compose.h" + export functional.__functional.perfect_forward + } module default_searcher { private header "__functional/default_searcher.h" } module function { private header "__functional/function.h" } - module hash { private header "__functional/hash.h" } + module hash { + private header "__functional/hash.h" + export cstdint + } module hash_fwd { private header "__fwd/hash.h" } module identity { private header "__functional/identity.h" } module invoke { private header "__functional/invoke.h" - export type_traits + export type_traits.invoke + export type_traits.is_void } module is_transparent { private header "__functional/is_transparent.h" } module mem_fn { private header "__functional/mem_fn.h" } @@ -1091,7 +1151,10 @@ module iter_move { private header "__iterator/iter_move.h" } module iter_swap { private header "__iterator/iter_swap.h" } module iterator { private header "__iterator/iterator.h" } - module iterator_traits { private header "__iterator/iterator_traits.h" } + module iterator_traits { + private header "__iterator/iterator_traits.h" + export concepts.__concepts.constructible + } module iterator_with_data { private header "__iterator/iterator_with_data.h" } module mergeable { private header "__iterator/mergeable.h" @@ -1108,12 +1171,12 @@ module permutable { private header "__iterator/permutable.h" } module prev { private header "__iterator/prev.h" } module projected { private header "__iterator/projected.h" } - module readable_traits { - private header "__iterator/readable_traits.h" - export __iterator.iterator_traits - } + module readable_traits { private header "__iterator/readable_traits.h" } module reverse_access { private header "__iterator/reverse_access.h" } - module reverse_iterator { private header "__iterator/reverse_iterator.h" } + module reverse_iterator { + private header "__iterator/reverse_iterator.h" + export iterator.__iterator.iterator_traits + } module segmented_iterator { private header "__iterator/segmented_iterator.h" } module size { private header "__iterator/size.h" } module sortable { @@ -1160,7 +1223,11 @@ export * module __mdspan { - module extents { private header "__mdspan/extents.h" } + module extents { + private header "__mdspan/extents.h" + export array + export span + } } } module memory { @@ -1181,10 +1248,7 @@ module auto_ptr { private header "__memory/auto_ptr.h" } module builtin_new_allocator { private header "__memory/builtin_new_allocator.h" } module compressed_pair { private header "__memory/compressed_pair.h" } - module concepts { - private header "__memory/concepts.h" - export type_traits.remove_reference - } + module concepts { private header "__memory/concepts.h" } module construct_at { private header "__memory/construct_at.h" } module destruct_n { private header "__memory/destruct_n.h" } module pointer_traits { private header "__memory/pointer_traits.h" } @@ -1194,12 +1258,24 @@ export algorithm.__algorithm.in_out_result } module raw_storage_iterator { private header "__memory/raw_storage_iterator.h" } - module shared_ptr { private header "__memory/shared_ptr.h" } + module shared_ptr { + private header "__memory/shared_ptr.h" + export memory.__memory.uninitialized_algorithms + export memory.__memory.unique_ptr + export type_traits.is_move_constructible + } module swap_allocator { private header "__memory/swap_allocator.h" } module temp_value { private header "__memory/temp_value.h" } module temporary_buffer { private header "__memory/temporary_buffer.h" } - module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" } - module unique_ptr { private header "__memory/unique_ptr.h" } + module uninitialized_algorithms { + private header "__memory/uninitialized_algorithms.h" + export algorithm.__algorithm.copy + } + module unique_ptr { + private header "__memory/unique_ptr.h" + export type_traits.is_assignable + export type_traits.is_convertible + } module uses_allocator { private header "__memory/uses_allocator.h" } module uses_allocator_construction { private header "__memory/uses_allocator_construction.h" } module voidify { private header "__memory/voidify.h" } @@ -1339,8 +1415,7 @@ module access { private header "__ranges/access.h" } module all { private header "__ranges/all.h" - export functional.__functional.compose - export functional.__functional.perfect_forward + export ranges.__ranges.owning_view } module as_rvalue_view { private header "__ranges/as_rvalue_view.h" } module common_view { private header "__ranges/common_view.h" } @@ -1355,19 +1430,28 @@ module data { private header "__ranges/data.h" } module drop_view { private header "__ranges/drop_view.h" } module drop_while_view { private header "__ranges/drop_while_view.h" } - module elements_view { private header "__ranges/elements_view.h" } + module elements_view { + private header "__ranges/elements_view.h" + export tuple.tuple_like + } module empty { private header "__ranges/empty.h" } module empty_view { private header "__ranges/empty_view.h" } module enable_borrowed_range { private header "__ranges/enable_borrowed_range.h" } module enable_view { private header "__ranges/enable_view.h" } - module filter_view { private header "__ranges/filter_view.h" } + module filter_view { + private header "__ranges/filter_view.h" + export ranges.__ranges.range_adaptor + } module from_range { private header "__ranges/from_range.h" } module iota_view { private header "__ranges/iota_view.h" } module istream_view { @requires_LIBCXX_ENABLE_LOCALIZATION@ private header "__ranges/istream_view.h" } - module join_view { private header "__ranges/join_view.h" } + module join_view { + private header "__ranges/join_view.h" + export iterator.__iterator.segmented_iterator + } module lazy_split_view { private header "__ranges/lazy_split_view.h" } module non_propagating_cache { private header "__ranges/non_propagating_cache.h" } module owning_view { private header "__ranges/owning_view.h" } @@ -1378,7 +1462,10 @@ module reverse_view { private header "__ranges/reverse_view.h" } module single_view { private header "__ranges/single_view.h" } module size { private header "__ranges/size.h" } - module split_view { private header "__ranges/split_view.h" } + module split_view { + private header "__ranges/split_view.h" + export ranges.__ranges.non_propagating_cache + } module subrange { private header "__ranges/subrange.h" export subrange_fwd @@ -1389,7 +1476,7 @@ module transform_view { private header "__ranges/transform_view.h" export functional.__functional.bind_back - export functional.__functional.perfect_forward + export ranges.__ranges.copyable_box } module view_interface { private header "__ranges/view_interface.h" } module views { private header "__ranges/views.h" } @@ -1500,7 +1587,6 @@ } module error_condition { private header "__system_error/error_condition.h" - export functional.__functional.hash export functional.__functional.unary_function } module system_error { private header "__system_error/system_error.h" } @@ -1548,7 +1634,10 @@ module alignment_of { private header "__type_traits/alignment_of.h" } module apply_cv { private header "__type_traits/apply_cv.h" } module can_extract_key { private header "__type_traits/can_extract_key.h" } - module common_reference { private header "__type_traits/common_reference.h" } + module common_reference { + private header "__type_traits/common_reference.h" + export type_traits.remove_cvref + } module common_type { private header "__type_traits/common_type.h" } module conditional { private header "__type_traits/conditional.h" } module conjunction { private header "__type_traits/conjunction.h" } @@ -1562,7 +1651,24 @@ module has_unique_object_representation { private header "__type_traits/has_unique_object_representation.h" } module has_virtual_destructor { private header "__type_traits/has_virtual_destructor.h" } module integral_constant { private header "__type_traits/integral_constant.h" } - module invoke { private header "__type_traits/invoke.h" } + module invoke { + private header "__type_traits/invoke.h" + export type_traits.add_lvalue_reference + export type_traits.apply_cv + export type_traits.conditional + export type_traits.decay + export type_traits.enable_if + export type_traits.integral_constant + export type_traits.is_base_of + export type_traits.is_core_convertible + export type_traits.is_member_function_pointer + export type_traits.is_member_object_pointer + export type_traits.is_reference_wrapper + export type_traits.is_same + export type_traits.is_void + export type_traits.nat + export type_traits.remove_cv + } module is_abstract { private header "__type_traits/is_abstract.h" } module is_aggregate { private header "__type_traits/is_aggregate.h" } module is_allocator { private header "__type_traits/is_allocator.h" } @@ -1670,7 +1776,10 @@ module make_32_64_or_128_bit { private header "__type_traits/make_32_64_or_128_bit.h" } module make_const_lvalue_ref { private header "__type_traits/make_const_lvalue_ref.h" } module make_signed { private header "__type_traits/make_signed.h" } - module make_unsigned { private header "__type_traits/make_unsigned.h" } + module make_unsigned { + private header "__type_traits/make_unsigned.h" + export type_traits.is_unsigned + } module maybe_const { private header "__type_traits/maybe_const.h" } module nat { private header "__type_traits/nat.h" } module negation { private header "__type_traits/negation.h" } @@ -1691,11 +1800,7 @@ module strip_signature { private header "__type_traits/strip_signature.h" } module type_identity { private header "__type_traits/type_identity.h" } module type_list { private header "__type_traits/type_list.h" } - module underlying_type { - private header "__type_traits/underlying_type.h" - - export type_traits - } + module underlying_type { private header "__type_traits/underlying_type.h" } module unwrap_ref { private header "__type_traits/unwrap_ref.h" } module void_t { private header "__type_traits/void_t.h" } } @@ -1728,7 +1833,10 @@ private header "__utility/auto_cast.h" export type_traits.decay } - module cmp { private header "__utility/cmp.h" } + module cmp { + private header "__utility/cmp.h" + export type_traits.make_unsigned + } module convert_to_integral { private header "__utility/convert_to_integral.h" } module declval { private header "__utility/declval.h" } module exception_guard { private header "__utility/exception_guard.h" } @@ -1738,7 +1846,11 @@ module in_place { private header "__utility/in_place.h" } module integer_sequence { private header "__utility/integer_sequence.h" } module move { private header "__utility/move.h" } - module pair { private header "__utility/pair.h" } + module pair { + private header "__utility/pair.h" + export type_traits.is_copy_assignable + export type_traits.is_move_assignable + } module pair_fwd { private header "__fwd/pair.h" } module piecewise_construct { private header "__utility/piecewise_construct.h" } module priority_tag { private header "__utility/priority_tag.h" } @@ -1788,7 +1900,7 @@ module __std_mbstate_t { private header "__std_mbstate_t.h" export * } module __threading_support { header "__threading_support" export * } module __tree { header "__tree" export * } - module __undef_macros { header "__undef_macros" export * } + module __undef_macros { textual header "__undef_macros" export * } module __verbose_abort { header "__verbose_abort" export * } // This one needs to appear after __tree to work around issues with modules in Objective-C++ mode. diff --git a/libcxx/include/set b/libcxx/include/set --- a/libcxx/include/set +++ b/libcxx/include/set @@ -485,6 +485,7 @@ #include <__node_handle> #include <__tree> #include <__type_traits/is_allocator.h> +#include <__type_traits/type_identity.h> #include <__utility/forward.h> #include diff --git a/libcxx/include/thread b/libcxx/include/thread --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -109,6 +109,8 @@ #include <__thread/poll_with_backoff.h> #include <__thread/timed_backoff_policy.h> #include <__threading_support> +#include <__type_traits/decay.h> +#include <__type_traits/is_pointer.h> #include <__utility/forward.h> #include #include diff --git a/libcxx/include/tuple b/libcxx/include/tuple --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -207,6 +207,7 @@ #include <__config> #include <__functional/invoke.h> #include <__fwd/array.h> +#include <__fwd/get.h> #include <__fwd/tuple.h> #include <__memory/allocator_arg_t.h> #include <__memory/uses_allocator.h> diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -474,6 +474,7 @@ #include <__memory_resource/polymorphic_allocator.h> #include <__node_handle> #include <__type_traits/is_allocator.h> +#include <__type_traits/type_identity.h> #include <__utility/forward.h> #include