diff --git a/libcxx/include/__iterator/advance.h b/libcxx/include/__iterator/advance.h --- a/libcxx/include/__iterator/advance.h +++ b/libcxx/include/__iterator/advance.h @@ -15,6 +15,7 @@ #include <__function_like.h> #include <__iterator/concepts.h> #include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> #include #include #include diff --git a/libcxx/include/__iterator/indirect_concepts.h b/libcxx/include/__iterator/indirect_concepts.h --- a/libcxx/include/__iterator/indirect_concepts.h +++ b/libcxx/include/__iterator/indirect_concepts.h @@ -12,6 +12,8 @@ #include <__config> #include <__iterator/concepts.h> #include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> #include #include diff --git a/libcxx/include/__iterator/next.h b/libcxx/include/__iterator/next.h --- a/libcxx/include/__iterator/next.h +++ b/libcxx/include/__iterator/next.h @@ -15,6 +15,8 @@ #include <__iterator/advance.h> #include <__iterator/concepts.h> #include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__iterator/prev.h b/libcxx/include/__iterator/prev.h --- a/libcxx/include/__iterator/prev.h +++ b/libcxx/include/__iterator/prev.h @@ -15,6 +15,8 @@ #include <__iterator/advance.h> #include <__iterator/concepts.h> #include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__memory/allocation_guard.h b/libcxx/include/__memory/allocation_guard.h --- a/libcxx/include/__memory/allocation_guard.h +++ b/libcxx/include/__memory/allocation_guard.h @@ -13,6 +13,7 @@ #include <__config> #include <__memory/allocator_traits.h> #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__memory/allocator.h b/libcxx/include/__memory/allocator.h --- a/libcxx/include/__memory/allocator.h +++ b/libcxx/include/__memory/allocator.h @@ -220,6 +220,9 @@ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return false;} +template +struct __is_default_allocator > : true_type { }; + _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__memory/allocator_traits.h b/libcxx/include/__memory/allocator_traits.h --- a/libcxx/include/__memory/allocator_traits.h +++ b/libcxx/include/__memory/allocator_traits.h @@ -361,9 +361,6 @@ template struct __is_default_allocator : false_type { }; -template -struct __is_default_allocator > : true_type { }; - // __is_cpp17_move_insertable template struct __is_cpp17_move_insertable diff --git a/libcxx/include/__memory/pointer_safety.h b/libcxx/include/__memory/pointer_safety.h --- a/libcxx/include/__memory/pointer_safety.h +++ b/libcxx/include/__memory/pointer_safety.h @@ -11,6 +11,7 @@ #define _LIBCPP___MEMORY_POINTER_SAFETY_H #include <__config> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__memory/pointer_traits.h b/libcxx/include/__memory/pointer_traits.h --- a/libcxx/include/__memory/pointer_traits.h +++ b/libcxx/include/__memory/pointer_traits.h @@ -11,6 +11,7 @@ #define _LIBCPP___MEMORY_POINTER_TRAITS_H #include <__config> +#include <__memory/addressof.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap --- a/libcxx/include/module.modulemap +++ b/libcxx/include/module.modulemap @@ -260,6 +260,7 @@ export * } module compare { + requires cplusplus20 header "compare" export * } @@ -268,6 +269,7 @@ export * } module concepts { + requires cplusplus20 header "concepts" export * } @@ -293,8 +295,14 @@ export * } module format { + requires cplusplus20 header "format" export * + + module __format { + module format_error { header "__format/format_error.h" } + module format_parse_context { header "__format/format_parse_context.h" } + } } module forward_list { header "forward_list" @@ -346,6 +354,20 @@ module iterator { header "iterator" export * + + module __iterator { + module advance { header "__iterator/advance.h" } + module concepts { header "__iterator/concepts.h" } + module default_sentinel { header "__iterator/default_sentinel.h" } + module incrementable_traits { header "__iterator/incrementable_traits.h" } + module indirect_concepts { header "__iterator/indirect_concepts.h" } + module iter_move { header "__iterator/iter_move.h" } + module iterator_traits { header "__iterator/iterator_traits.h" } + module next { header "__iterator/next.h" } + module prev { header "__iterator/prev.h" } + module projected { header "__iterator/projected.h" } + module readable_traits { header "__iterator/readable_traits.h" } + } } module latch { requires cplusplus14 @@ -373,6 +395,23 @@ module memory { header "memory" export * + + module __memory { + module addressof { header "__memory/addressof.h" } + module allocation_guard { header "__memory/allocation_guard.h" } + module allocator_traits { header "__memory/allocator_traits.h" } + module allocator { header "__memory/allocator.h" } + module auto_ptr { header "__memory/auto_ptr.h" } + module compressed_pair { header "__memory/compressed_pair.h" } + module construct_at { header "__memory/construct_at.h" } + module pointer_safety { header "__memory/pointer_safety.h" } + module pointer_traits { header "__memory/pointer_traits.h" } + module raw_storage_iterator { header "__memory/raw_storage_iterator.h" } + module shared_ptr { header "__memory/shared_ptr.h" } + module temporary_buffer { header "__memory/temporary_buffer.h" } + module uninitialized_algorithms { header "__memory/uninitialized_algorithms.h" } + module unique_ptr { header "__memory/unique_ptr.h" } + } } module mutex { header "mutex" @@ -410,11 +449,23 @@ export * } module ranges { + requires cplusplus20 header "ranges" export compare export initializer_list export iterator export * + + module __ranges { + module access { header "__ranges/access.h" } + module concepts { header "__ranges/concepts.h" } + module data { header "__ranges/data.h" } + module empty { header "__ranges/empty.h" } + module enabled_borrowed_range { header "__ranges/enabled_borrowed_range.h" } + module size { header "__ranges/size.h" } + module view_interface { header "__ranges/view_interface.h" } + module view { header "__ranges/view.h" } + } } module ratio { header "ratio" @@ -512,6 +563,12 @@ header "utility" export initializer_list export * + + module __utility { + module to_underlying { + header "__utility/to_underlying.h" + } + } } module valarray { header "valarray" @@ -533,22 +590,28 @@ } // FIXME: These should be private. - module __bit_reference { header "__bit_reference" export * } - module __bits { header "__bits" export * } - module __debug { header "__debug" export * } - module __errc { header "__errc" export * } - module __functional_base { header "__functional_base" export * } - module __hash_table { header "__hash_table" export * } - module __locale { header "__locale" export * } - module __mutex_base { header "__mutex_base" export * } - module __node_handle { header "__node_handle" export * } - module __split_buffer { header "__split_buffer" export * } - module __std_stream { header "__std_stream" export * } - module __string { header "__string" export * } - module __threading_support { header "__threading_support" export * } - module __tree { header "__tree" export * } - module __tuple { header "__tuple" export * } - module __undef_macros { header "__undef_macros" export * } + module __availability { header "__availability" export * } + module __bit_reference { header "__bit_reference" export * } + module __bits { header "__bits" export * } + module __config { header "__config" export * } + module __debug { header "__debug" export * } + module __errc { header "__errc" export * } + module __function_like { header "__function_like.h" export * } + module __functional_base { header "__functional_base" export * } + // TODO: modularise __functional_(base_)?03 + module __hash_table { header "__hash_table" export * } + // libcpp_version not modularised since it's just a version number + module __locale { header "__locale" export * } + module __mutex_base { header "__mutex_base" export * } + module __node_handle { header "__node_handle" export * } + module __nullptr { header "__nullptr" export * } + module __split_buffer { header "__split_buffer" export * } + module __std_stream { header "__std_stream" export * } + module __string { header "__string" export * } + module __threading_support { header "__threading_support" export * } + module __tree { header "__tree" export * } + module __tuple { header "__tuple" export * } + module __undef_macros { header "__undef_macros" export * } module experimental { requires cplusplus11