1// define the module for __config outside of the top level 'std' module
2// since __config may be included from C headers which may create an
3// include cycle.
4module std_config [system] [extern_c] {
5  header "__config"
6  export *
7}
8
9module std [system] {
10  export std_config
11  // FIXME: The standard does not require that each of these submodules
12  // re-exports its imported modules. We should provide an alternative form of
13  // export that issues a warning if a name from the submodule is used, and
14  // use that to provide a 'strict mode' for libc++.
15
16  // Deprecated C-compatibility headers. These can all be included from within
17  // an 'extern "C"' context.
18  module depr [extern_c] {
19    // <assert.h> provided by C library.
20    module ctype_h {
21      header "ctype.h"
22      export *
23    }
24    module errno_h {
25      header "errno.h"
26      export *
27    }
28    module fenv_h {
29      header "fenv.h"
30      export *
31    }
32    // <float.h> provided by compiler or C library.
33    module inttypes_h {
34      header "inttypes.h"
35      export stdint_h
36      export *
37    }
38    // <iso646.h> provided by compiler.
39    // <limits.h> provided by compiler or C library.
40    module locale_h {
41      @requires_LIBCXX_ENABLE_LOCALIZATION@
42      header "locale.h"
43      export *
44    }
45    module math_h {
46      header "math.h"
47      export *
48    }
49    module setjmp_h {
50      header "setjmp.h"
51      export *
52    }
53    module stdatomic_h {
54      @requires_LIBCXX_ENABLE_THREADS@
55      requires cplusplus23
56      header "stdatomic.h"
57      export *
58    }
59    // FIXME: <stdalign.h> is missing.
60    // <signal.h> provided by C library.
61    // <stdarg.h> provided by compiler.
62    // <stdbool.h> provided by compiler.
63    module stddef_h {
64      // <stddef.h>'s __need_* macros require textual inclusion.
65      textual header "stddef.h"
66    }
67    module stdint_h {
68      header "stdint.h"
69      export *
70      // FIXME: This module only exists on OS X and for some reason the
71      // wildcard above doesn't export it.
72      export Darwin.C.stdint
73    }
74    module stdio_h {
75      // <stdio.h>'s __need_* macros require textual inclusion.
76      textual header "stdio.h"
77      export *
78      export Darwin.C.stdio
79    }
80    module stdlib_h {
81      // <stdlib.h>'s __need_* macros require textual inclusion.
82      textual header "stdlib.h"
83      export *
84    }
85    module string_h {
86      header "string.h"
87      export *
88    }
89    module uchar_h {
90      header "uchar.h"
91      export *
92    }
93    // <time.h> provided by C library.
94    module wchar_h {
95      @requires_LIBCXX_ENABLE_WIDE_CHARACTERS@
96      // <wchar.h>'s __need_* macros require textual inclusion.
97      textual header "wchar.h"
98      export *
99    }
100    module wctype_h {
101      @requires_LIBCXX_ENABLE_WIDE_CHARACTERS@
102      header "wctype.h"
103      export *
104    }
105  }
106
107  // <complex.h> and <tgmath.h> are not C headers in any real sense, do not
108  // allow their use in extern "C" contexts.
109  module complex_h {
110    header "complex.h"
111    export ccomplex
112    export *
113  }
114  module tgmath_h {
115    header "tgmath.h"
116    export ccomplex
117    export cmath
118    export *
119  }
120
121  // C compatibility headers.
122  module compat {
123    module cassert {
124      // <cassert>'s use of NDEBUG requires textual inclusion.
125      textual header "cassert"
126    }
127    module ccomplex {
128      header "ccomplex"
129      export complex
130      export *
131    }
132    module cctype {
133      header "cctype"
134      export *
135    }
136    module cerrno {
137      header "cerrno"
138      export *
139    }
140    module cfenv {
141      header "cfenv"
142      export *
143    }
144    module cfloat {
145      header "cfloat"
146      export *
147    }
148    module cinttypes {
149      header "cinttypes"
150      export cstdint
151      export *
152    }
153    module ciso646 {
154      header "ciso646"
155      export *
156    }
157    module climits {
158      header "climits"
159      export *
160    }
161    module clocale {
162      @requires_LIBCXX_ENABLE_LOCALIZATION@
163      header "clocale"
164      export *
165    }
166    module cmath {
167      header "cmath"
168      export *
169    }
170    module csetjmp {
171      header "csetjmp"
172      export *
173    }
174    module csignal {
175      header "csignal"
176      export *
177    }
178    // FIXME: <cstdalign> is missing.
179    module cstdarg {
180      header "cstdarg"
181      export *
182    }
183    module cstdbool {
184      header "cstdbool"
185      export *
186    }
187    module cstddef {
188      header "cstddef"
189      export *
190    }
191    module cstdint {
192      header "cstdint"
193      export depr.stdint_h
194      export *
195    }
196    module cstdio {
197      header "cstdio"
198      export *
199    }
200    module cstdlib {
201      header "cstdlib"
202      export *
203    }
204    module cstring {
205      header "cstring"
206      export *
207    }
208    module ctgmath {
209      header "ctgmath"
210      export ccomplex
211      export cmath
212      export *
213    }
214    module ctime {
215      header "ctime"
216      export *
217    }
218    module cuchar {
219      header "cuchar"
220      export *
221    }
222    module cwchar {
223      @requires_LIBCXX_ENABLE_WIDE_CHARACTERS@
224      header "cwchar"
225      export depr.stdio_h
226      export *
227    }
228    module cwctype {
229      @requires_LIBCXX_ENABLE_WIDE_CHARACTERS@
230      header "cwctype"
231      export *
232    }
233  }
234
235  module algorithm {
236    header "algorithm"
237    export initializer_list
238    export *
239
240    module __algorithm {
241      module adjacent_find                   { private header "__algorithm/adjacent_find.h" }
242      module all_of                          { private header "__algorithm/all_of.h" }
243      module any_of                          { private header "__algorithm/any_of.h" }
244      module binary_search                   { private header "__algorithm/binary_search.h" }
245      module clamp                           { private header "__algorithm/clamp.h" }
246      module comp                            { private header "__algorithm/comp.h" }
247      module comp_ref_type                   { private header "__algorithm/comp_ref_type.h" }
248      module copy                            { private header "__algorithm/copy.h" }
249      module copy_backward                   { private header "__algorithm/copy_backward.h" }
250      module copy_if                         { private header "__algorithm/copy_if.h" }
251      module copy_n                          { private header "__algorithm/copy_n.h" }
252      module count                           { private header "__algorithm/count.h" }
253      module count_if                        { private header "__algorithm/count_if.h" }
254      module equal                           { private header "__algorithm/equal.h" }
255      module equal_range                     { private header "__algorithm/equal_range.h" }
256      module fill                            { private header "__algorithm/fill.h" }
257      module fill_n                          { private header "__algorithm/fill_n.h" }
258      module find                            { private header "__algorithm/find.h" }
259      module find_end                        { private header "__algorithm/find_end.h" }
260      module find_first_of                   { private header "__algorithm/find_first_of.h" }
261      module find_if                         { private header "__algorithm/find_if.h" }
262      module find_if_not                     { private header "__algorithm/find_if_not.h" }
263      module for_each                        { private header "__algorithm/for_each.h" }
264      module for_each_n                      { private header "__algorithm/for_each_n.h" }
265      module generate                        { private header "__algorithm/generate.h" }
266      module generate_n                      { private header "__algorithm/generate_n.h" }
267      module half_positive                   { private header "__algorithm/half_positive.h" }
268      module in_found_result                 { private header "__algorithm/in_found_result.h" }
269      module in_fun_result                   { private header "__algorithm/in_fun_result.h" }
270      module in_in_out_result                { private header "__algorithm/in_in_out_result.h" }
271      module in_in_result                    { private header "__algorithm/in_in_result.h" }
272      module in_out_out_result               { private header "__algorithm/in_out_out_result.h" }
273      module in_out_result                   { private header "__algorithm/in_out_result.h" }
274      module includes                        { private header "__algorithm/includes.h" }
275      module inplace_merge                   { private header "__algorithm/inplace_merge.h" }
276      module is_heap                         { private header "__algorithm/is_heap.h" }
277      module is_heap_until                   { private header "__algorithm/is_heap_until.h" }
278      module is_partitioned                  { private header "__algorithm/is_partitioned.h" }
279      module is_permutation                  { private header "__algorithm/is_permutation.h" }
280      module is_sorted                       { private header "__algorithm/is_sorted.h" }
281      module is_sorted_until                 { private header "__algorithm/is_sorted_until.h" }
282      module iter_swap                       { private header "__algorithm/iter_swap.h" }
283      module iterator_operations             { private header "__algorithm/iterator_operations.h" }
284      module lexicographical_compare         { private header "__algorithm/lexicographical_compare.h" }
285      module lower_bound                     { private header "__algorithm/lower_bound.h" }
286      module make_heap                       { private header "__algorithm/make_heap.h" }
287      module make_projected                  { private header "__algorithm/make_projected.h" }
288      module max                             { private header "__algorithm/max.h" }
289      module max_element                     { private header "__algorithm/max_element.h" }
290      module merge                           { private header "__algorithm/merge.h" }
291      module min                             { private header "__algorithm/min.h" }
292      module min_element                     { private header "__algorithm/min_element.h" }
293      module min_max_result                  { private header "__algorithm/min_max_result.h" }
294      module minmax                          { private header "__algorithm/minmax.h" }
295      module minmax_element                  { private header "__algorithm/minmax_element.h" }
296      module mismatch                        { private header "__algorithm/mismatch.h" }
297      module move                            { private header "__algorithm/move.h" }
298      module move_backward                   { private header "__algorithm/move_backward.h" }
299      module next_permutation                { private header "__algorithm/next_permutation.h" }
300      module none_of                         { private header "__algorithm/none_of.h" }
301      module nth_element                     { private header "__algorithm/nth_element.h" }
302      module partial_sort                    { private header "__algorithm/partial_sort.h" }
303      module partial_sort_copy               { private header "__algorithm/partial_sort_copy.h" }
304      module partition                       { private header "__algorithm/partition.h" }
305      module partition_copy                  { private header "__algorithm/partition_copy.h" }
306      module partition_point                 { private header "__algorithm/partition_point.h" }
307      module pop_heap                        { private header "__algorithm/pop_heap.h" }
308      module prev_permutation                { private header "__algorithm/prev_permutation.h" }
309      module push_heap                       { private header "__algorithm/push_heap.h" }
310      module ranges_adjacent_find            { private header "__algorithm/ranges_adjacent_find.h" }
311      module ranges_all_of                   { private header "__algorithm/ranges_all_of.h" }
312      module ranges_any_of                   { private header "__algorithm/ranges_any_of.h" }
313      module ranges_binary_search            { private header "__algorithm/ranges_binary_search.h" }
314      module ranges_clamp                    { private header "__algorithm/ranges_clamp.h" }
315      module ranges_copy                     { private header "__algorithm/ranges_copy.h" }
316      module ranges_copy_backward            { private header "__algorithm/ranges_copy_backward.h" }
317      module ranges_copy_if                  { private header "__algorithm/ranges_copy_if.h" }
318      module ranges_copy_n                   { private header "__algorithm/ranges_copy_n.h" }
319      module ranges_count                    { private header "__algorithm/ranges_count.h" }
320      module ranges_count_if                 { private header "__algorithm/ranges_count_if.h" }
321      module ranges_equal                    { private header "__algorithm/ranges_equal.h" }
322      module ranges_equal_range              { private header "__algorithm/ranges_equal_range.h" }
323      module ranges_fill                     { private header "__algorithm/ranges_fill.h" }
324      module ranges_fill_n                   { private header "__algorithm/ranges_fill_n.h" }
325      module ranges_find                     { private header "__algorithm/ranges_find.h" }
326      module ranges_find_end                 { private header "__algorithm/ranges_find_end.h" }
327      module ranges_find_first_of            { private header "__algorithm/ranges_find_first_of.h" }
328      module ranges_find_if                  { private header "__algorithm/ranges_find_if.h" }
329      module ranges_find_if_not              { private header "__algorithm/ranges_find_if_not.h" }
330      module ranges_for_each                 { private header "__algorithm/ranges_for_each.h" }
331      module ranges_for_each_n               { private header "__algorithm/ranges_for_each_n.h" }
332      module ranges_generate                 { private header "__algorithm/ranges_generate.h" }
333      module ranges_generate_n               { private header "__algorithm/ranges_generate_n.h" }
334      module ranges_includes                 { private header "__algorithm/ranges_includes.h" }
335      module ranges_inplace_merge            { private header "__algorithm/ranges_inplace_merge.h" }
336      module ranges_is_heap                  { private header "__algorithm/ranges_is_heap.h" }
337      module ranges_is_heap_until            { private header "__algorithm/ranges_is_heap_until.h" }
338      module ranges_is_partitioned           { private header "__algorithm/ranges_is_partitioned.h" }
339      module ranges_is_permutation           { private header "__algorithm/ranges_is_permutation.h" }
340      module ranges_is_sorted                { private header "__algorithm/ranges_is_sorted.h" }
341      module ranges_is_sorted_until          { private header "__algorithm/ranges_is_sorted_until.h" }
342      module ranges_iterator_concept         { private header "__algorithm/ranges_iterator_concept.h" }
343      module ranges_lexicographical_compare  { private header "__algorithm/ranges_lexicographical_compare.h" }
344      module ranges_lower_bound              { private header "__algorithm/ranges_lower_bound.h" }
345      module ranges_make_heap                { private header "__algorithm/ranges_make_heap.h" }
346      module ranges_max                      { private header "__algorithm/ranges_max.h" }
347      module ranges_max_element              { private header "__algorithm/ranges_max_element.h" }
348      module ranges_merge                    { private header "__algorithm/ranges_merge.h" }
349      module ranges_min                      { private header "__algorithm/ranges_min.h" }
350      module ranges_min_element              { private header "__algorithm/ranges_min_element.h" }
351      module ranges_minmax                   { private header "__algorithm/ranges_minmax.h" }
352      module ranges_minmax_element           { private header "__algorithm/ranges_minmax_element.h" }
353      module ranges_mismatch                 { private header "__algorithm/ranges_mismatch.h" }
354      module ranges_move                     { private header "__algorithm/ranges_move.h" }
355      module ranges_move_backward            { private header "__algorithm/ranges_move_backward.h" }
356      module ranges_next_permutation         { private header "__algorithm/ranges_next_permutation.h" }
357      module ranges_none_of                  { private header "__algorithm/ranges_none_of.h" }
358      module ranges_nth_element              { private header "__algorithm/ranges_nth_element.h" }
359      module ranges_partial_sort             { private header "__algorithm/ranges_partial_sort.h" }
360      module ranges_partial_sort_copy        { private header "__algorithm/ranges_partial_sort_copy.h" }
361      module ranges_partition                { private header "__algorithm/ranges_partition.h" }
362      module ranges_partition_copy           { private header "__algorithm/ranges_partition_copy.h" }
363      module ranges_partition_point          { private header "__algorithm/ranges_partition_point.h" }
364      module ranges_pop_heap                 { private header "__algorithm/ranges_pop_heap.h" }
365      module ranges_prev_permutation         { private header "__algorithm/ranges_prev_permutation.h" }
366      module ranges_push_heap                { private header "__algorithm/ranges_push_heap.h" }
367      module ranges_remove                   { private header "__algorithm/ranges_remove.h" }
368      module ranges_remove_copy              { private header "__algorithm/ranges_remove_copy.h" }
369      module ranges_remove_copy_if           { private header "__algorithm/ranges_remove_copy_if.h" }
370      module ranges_remove_if                { private header "__algorithm/ranges_remove_if.h" }
371      module ranges_replace                  { private header "__algorithm/ranges_replace.h" }
372      module ranges_replace_copy             { private header "__algorithm/ranges_replace_copy.h" }
373      module ranges_replace_copy_if          { private header "__algorithm/ranges_replace_copy_if.h" }
374      module ranges_replace_if               { private header "__algorithm/ranges_replace_if.h" }
375      module ranges_reverse                  { private header "__algorithm/ranges_reverse.h" }
376      module ranges_reverse_copy             { private header "__algorithm/ranges_reverse_copy.h" }
377      module ranges_rotate                   { private header "__algorithm/ranges_rotate.h" }
378      module ranges_rotate_copy              { private header "__algorithm/ranges_rotate_copy.h" }
379      module ranges_sample                   { private header "__algorithm/ranges_sample.h" }
380      module ranges_search                   { private header "__algorithm/ranges_search.h" }
381      module ranges_search_n                 { private header "__algorithm/ranges_search_n.h" }
382      module ranges_set_difference           { private header "__algorithm/ranges_set_difference.h" }
383      module ranges_set_intersection         { private header "__algorithm/ranges_set_intersection.h" }
384      module ranges_set_symmetric_difference { private header "__algorithm/ranges_set_symmetric_difference.h" }
385      module ranges_set_union                { private header "__algorithm/ranges_set_union.h" }
386      module ranges_shuffle                  { private header "__algorithm/ranges_shuffle.h" }
387      module ranges_sort                     { private header "__algorithm/ranges_sort.h" }
388      module ranges_sort_heap                { private header "__algorithm/ranges_sort_heap.h" }
389      module ranges_stable_partition         { private header "__algorithm/ranges_stable_partition.h" }
390      module ranges_stable_sort              { private header "__algorithm/ranges_stable_sort.h" }
391      module ranges_swap_ranges              { private header "__algorithm/ranges_swap_ranges.h" }
392      module ranges_transform                { private header "__algorithm/ranges_transform.h" }
393      module uniform_random_bit_generator_adaptor {
394        private header "__algorithm/uniform_random_bit_generator_adaptor.h"
395      }
396      module ranges_unique                   { private header "__algorithm/ranges_unique.h" }
397      module ranges_unique_copy              { private header "__algorithm/ranges_unique_copy.h" }
398      module ranges_upper_bound              { private header "__algorithm/ranges_upper_bound.h" }
399      module remove                          { private header "__algorithm/remove.h" }
400      module remove_copy                     { private header "__algorithm/remove_copy.h" }
401      module remove_copy_if                  { private header "__algorithm/remove_copy_if.h" }
402      module remove_if                       { private header "__algorithm/remove_if.h" }
403      module replace                         { private header "__algorithm/replace.h" }
404      module replace_copy                    { private header "__algorithm/replace_copy.h" }
405      module replace_copy_if                 { private header "__algorithm/replace_copy_if.h" }
406      module replace_if                      { private header "__algorithm/replace_if.h" }
407      module reverse                         { private header "__algorithm/reverse.h" }
408      module reverse_copy                    { private header "__algorithm/reverse_copy.h" }
409      module rotate                          { private header "__algorithm/rotate.h" }
410      module rotate_copy                     { private header "__algorithm/rotate_copy.h" }
411      module sample                          { private header "__algorithm/sample.h" }
412      module search                          { private header "__algorithm/search.h" }
413      module search_n                        { private header "__algorithm/search_n.h" }
414      module set_difference                  { private header "__algorithm/set_difference.h" }
415      module set_intersection                { private header "__algorithm/set_intersection.h" }
416      module set_symmetric_difference        { private header "__algorithm/set_symmetric_difference.h" }
417      module set_union                       { private header "__algorithm/set_union.h" }
418      module shift_left                      { private header "__algorithm/shift_left.h" }
419      module shift_right                     { private header "__algorithm/shift_right.h" }
420      module shuffle                         { private header "__algorithm/shuffle.h" }
421      module sift_down                       { private header "__algorithm/sift_down.h" }
422      module sort                            { private header "__algorithm/sort.h" }
423      module sort_heap                       { private header "__algorithm/sort_heap.h" }
424      module stable_partition                { private header "__algorithm/stable_partition.h" }
425      module stable_sort                     { private header "__algorithm/stable_sort.h" }
426      module swap_ranges                     { private header "__algorithm/swap_ranges.h" }
427      module transform                       { private header "__algorithm/transform.h" }
428      module unique                          { private header "__algorithm/unique.h" }
429      module unique_copy                     { private header "__algorithm/unique_copy.h" }
430      module unwrap_iter                     { private header "__algorithm/unwrap_iter.h" }
431      module unwrap_range                    { private header "__algorithm/unwrap_range.h" }
432      module upper_bound                     { private header "__algorithm/upper_bound.h" }
433    }
434  }
435  module any {
436    header "any"
437    export *
438  }
439  module array {
440    header "array"
441    export initializer_list
442    export *
443  }
444  module atomic {
445    header "atomic"
446    export *
447  }
448  module barrier {
449    @requires_LIBCXX_ENABLE_THREADS@
450    header "barrier"
451    export *
452  }
453  module bit {
454    header "bit"
455    export *
456
457    module __bit {
458      module bit_cast { private header "__bit/bit_cast.h" }
459      module byteswap { private header "__bit/byteswap.h" }
460    }
461  }
462  module bitset {
463    header "bitset"
464    export string
465    export iosfwd
466    export *
467  }
468  // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
469  module charconv {
470    header "charconv"
471    export *
472
473    module __charconv {
474      module chars_format      { private header "__charconv/chars_format.h" }
475      module from_chars_result { private header "__charconv/from_chars_result.h" }
476      module tables            { private header "__charconv/tables.h" }
477      module to_chars_base_10  { private header "__charconv/to_chars_base_10.h" }
478      module to_chars_result   { private header "__charconv/to_chars_result.h" }
479    }
480
481  }
482  module chrono {
483    header "chrono"
484    export *
485
486    module __chrono {
487      module calendar              { private header "__chrono/calendar.h" }
488      module convert_to_timespec   { private header "__chrono/convert_to_timespec.h" }
489      module day                   { private header "__chrono/day.h" }
490      module duration              { private header "__chrono/duration.h" }
491      module file_clock            { private header "__chrono/file_clock.h" }
492      module hh_mm_ss              { private header "__chrono/hh_mm_ss.h" }
493      module high_resolution_clock {
494        private header "__chrono/high_resolution_clock.h"
495        export steady_clock
496        export system_clock
497      }
498      module literals              { private header "__chrono/literals.h" }
499      module month                 { private header "__chrono/month.h" }
500      module month_weekday         { private header "__chrono/month_weekday.h" }
501      module monthday              { private header "__chrono/monthday.h" }
502      module steady_clock          { private header "__chrono/steady_clock.h" }
503      module system_clock          { private header "__chrono/system_clock.h" }
504      module time_point            { private header "__chrono/time_point.h" }
505      module weekday               { private header "__chrono/weekday.h" }
506      module year                  { private header "__chrono/year.h" }
507      module year_month            { private header "__chrono/year_month.h" }
508      module year_month_day        { private header "__chrono/year_month_day.h" }
509      module year_month_weekday    { private header "__chrono/year_month_weekday.h" }
510    }
511  }
512  module codecvt {
513    @requires_LIBCXX_ENABLE_LOCALIZATION@
514    header "codecvt"
515    export *
516  }
517  module compare {
518    header "compare"
519    export *
520
521    module __compare {
522      module common_comparison_category     { private header "__compare/common_comparison_category.h" }
523      module compare_partial_order_fallback { private header "__compare/compare_partial_order_fallback.h" }
524      module compare_strong_order_fallback  { private header "__compare/compare_strong_order_fallback.h" }
525      module compare_three_way              { private header "__compare/compare_three_way.h" }
526      module compare_three_way_result       { private header "__compare/compare_three_way_result.h" }
527      module compare_weak_order_fallback    { private header "__compare/compare_weak_order_fallback.h" }
528      module is_eq                          { private header "__compare/is_eq.h" }
529      module ordering                       { private header "__compare/ordering.h" }
530      module partial_order                  { private header "__compare/partial_order.h" }
531      module strong_order                   { private header "__compare/strong_order.h" }
532      module synth_three_way                { private header "__compare/synth_three_way.h" }
533      module three_way_comparable           { private header "__compare/three_way_comparable.h" }
534      module weak_order                     { private header "__compare/weak_order.h" }
535    }
536  }
537  module complex {
538    header "complex"
539    export *
540  }
541  module concepts {
542    header "concepts"
543    export *
544
545    module __concepts {
546      module arithmetic                 { private header "__concepts/arithmetic.h" }
547      module assignable                 { private header "__concepts/assignable.h" }
548      module boolean_testable           { private header "__concepts/boolean_testable.h" }
549      module class_or_enum              { private header "__concepts/class_or_enum.h" }
550      module common_reference_with      { private header "__concepts/common_reference_with.h" }
551      module common_with                { private header "__concepts/common_with.h" }
552      module constructible              { private header "__concepts/constructible.h" }
553      module convertible_to             { private header "__concepts/convertible_to.h" }
554      module copyable                   { private header "__concepts/copyable.h" }
555      module derived_from               { private header "__concepts/derived_from.h" }
556      module destructible               { private header "__concepts/destructible.h" }
557      module different_from             { private header "__concepts/different_from.h" }
558      module equality_comparable        { private header "__concepts/equality_comparable.h" }
559      module invocable                  { private header "__concepts/invocable.h" }
560      module movable                    { private header "__concepts/movable.h" }
561      module predicate                  { private header "__concepts/predicate.h" }
562      module regular                    { private header "__concepts/regular.h" }
563      module relation                   { private header "__concepts/relation.h" }
564      module same_as                    { private header "__concepts/same_as.h" }
565      module semiregular                { private header "__concepts/semiregular.h" }
566      module swappable                  { private header "__concepts/swappable.h" }
567      module totally_ordered            { private header "__concepts/totally_ordered.h" }
568    }
569  }
570  module condition_variable {
571    header "condition_variable"
572    export *
573  }
574  module coroutine {
575    requires coroutines
576    header "coroutine"
577    export compare
578    export *
579
580    module __coroutine {
581      module coroutine_handle           { private header "__coroutine/coroutine_handle.h" }
582      module coroutine_traits           { private header "__coroutine/coroutine_traits.h" }
583      module noop_coroutine_handle      { private header "__coroutine/noop_coroutine_handle.h" }
584      module trivial_awaitables         { private header "__coroutine/trivial_awaitables.h" }
585    }
586  }
587  module deque {
588    header "deque"
589    export initializer_list
590    export *
591  }
592  module exception {
593    header "exception"
594    export *
595  }
596  module execution {
597    header "execution"
598    export *
599  }
600  module filesystem {
601    @requires_LIBCXX_ENABLE_FILESYSTEM@
602    header "filesystem"
603    export *
604
605    module __filesystem {
606      module copy_options                 { private header "__filesystem/copy_options.h" }
607      module directory_entry              { private header "__filesystem/directory_entry.h" }
608      module directory_iterator           { private header "__filesystem/directory_iterator.h" }
609      module directory_options            { private header "__filesystem/directory_options.h" }
610      module file_status                  { private header "__filesystem/file_status.h" }
611      module file_time_type               { private header "__filesystem/file_time_type.h" }
612      module file_type                    { private header "__filesystem/file_type.h" }
613      module filesystem_error             { private header "__filesystem/filesystem_error.h" }
614      module operations                   { private header "__filesystem/operations.h" }
615      module path                         { private header "__filesystem/path.h" }
616      module path_iterator                { private header "__filesystem/path_iterator.h" }
617      module perm_options                 { private header "__filesystem/perm_options.h" }
618      module perms                        { private header "__filesystem/perms.h" }
619      module recursive_directory_iterator { private header "__filesystem/recursive_directory_iterator.h" }
620      module space_info                   { private header "__filesystem/space_info.h" }
621      module u8path                       { private header "__filesystem/u8path.h" }
622    }
623  }
624  module format {
625    header "format"
626    export *
627
628    module __format {
629      module buffer                          { private header "__format/buffer.h" }
630      module concepts                        { private header "__format/concepts.h" }
631      module enable_insertable               { private header "__format/enable_insertable.h" }
632      module extended_grapheme_cluster_table { private header "__format/extended_grapheme_cluster_table.h" }
633      module format_arg                      { private header "__format/format_arg.h" }
634      module format_arg_store                { private header "__format/format_arg_store.h" }
635      module format_args                     { private header "__format/format_args.h" }
636      module format_context {
637        private header "__format/format_context.h"
638        export optional
639        export locale
640      }
641      module format_error                    { private header "__format/format_error.h" }
642      module format_fwd                      { private header "__format/format_fwd.h" }
643      module format_parse_context            { private header "__format/format_parse_context.h" }
644      module format_string                   { private header "__format/format_string.h" }
645      module format_to_n_result              { private header "__format/format_to_n_result.h" }
646      module formatter                       { private header "__format/formatter.h" }
647      module formatter_bool                  { private header "__format/formatter_bool.h" }
648      module formatter_char                  { private header "__format/formatter_char.h" }
649      module formatter_floating_point        { private header "__format/formatter_floating_point.h" }
650      module formatter_integer               { private header "__format/formatter_integer.h" }
651      module formatter_integral              { private header "__format/formatter_integral.h" }
652      module formatter_output                { private header "__format/formatter_output.h" }
653      module formatter_pointer               { private header "__format/formatter_pointer.h" }
654      module formatter_string                { private header "__format/formatter_string.h" }
655      module parser_std_format_spec          { private header "__format/parser_std_format_spec.h" }
656      module unicode                         { private header "__format/unicode.h" }
657    }
658  }
659  module forward_list {
660    header "forward_list"
661    export initializer_list
662    export *
663  }
664  module fstream {
665    @requires_LIBCXX_ENABLE_LOCALIZATION@
666    header "fstream"
667    export *
668  }
669  module functional {
670    header "functional"
671    export *
672
673    module __functional {
674      module binary_function            { private header "__functional/binary_function.h" }
675      module binary_negate              { private header "__functional/binary_negate.h" }
676      module bind                       { private header "__functional/bind.h" }
677      module bind_back                  { private header "__functional/bind_back.h" }
678      module bind_front                 { private header "__functional/bind_front.h" }
679      module binder1st                  { private header "__functional/binder1st.h" }
680      module binder2nd                  { private header "__functional/binder2nd.h" }
681      module boyer_moore_searcher       { private header "__functional/boyer_moore_searcher.h" }
682      module compose                    { private header "__functional/compose.h" }
683      module default_searcher           { private header "__functional/default_searcher.h" }
684      module function                   { private header "__functional/function.h" }
685      module hash                       { private header "__functional/hash.h" }
686      module identity                   { private header "__functional/identity.h" }
687      module invoke                     { private header "__functional/invoke.h" }
688      module is_transparent             { private header "__functional/is_transparent.h" }
689      module mem_fn                     { private header "__functional/mem_fn.h" }
690      module mem_fun_ref                { private header "__functional/mem_fun_ref.h" }
691      module not_fn                     { private header "__functional/not_fn.h" }
692      module operations                 { private header "__functional/operations.h" }
693      module perfect_forward            { private header "__functional/perfect_forward.h" }
694      module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" }
695      module pointer_to_unary_function  { private header "__functional/pointer_to_unary_function.h" }
696      module ranges_operations          { private header "__functional/ranges_operations.h" }
697      module reference_wrapper          { private header "__functional/reference_wrapper.h" }
698      module unary_function             { private header "__functional/unary_function.h" }
699      module unary_negate               { private header "__functional/unary_negate.h" }
700      module unwrap_ref                 { private header "__functional/unwrap_ref.h" }
701      module weak_result_type           { private header "__functional/weak_result_type.h" }
702    }
703  }
704  module future {
705    @requires_LIBCXX_ENABLE_THREADS@
706    header "future"
707    export *
708  }
709  module initializer_list {
710    header "initializer_list"
711    export *
712  }
713  module iomanip {
714    @requires_LIBCXX_ENABLE_LOCALIZATION@
715    header "iomanip"
716    export *
717  }
718  module ios {
719    @requires_LIBCXX_ENABLE_LOCALIZATION@
720    header "ios"
721    export iosfwd
722    export *
723
724    module __ios {
725      module fpos { private header "__ios/fpos.h" }
726    }
727  }
728  module iosfwd {
729    header "iosfwd"
730    export *
731  }
732  module iostream {
733    @requires_LIBCXX_ENABLE_LOCALIZATION@
734    header "iostream"
735    export ios
736    export streambuf
737    export istream
738    export ostream
739    export *
740  }
741  module istream {
742    @requires_LIBCXX_ENABLE_LOCALIZATION@
743    header "istream"
744    // FIXME: should re-export ios, streambuf?
745    export *
746  }
747  module iterator {
748    header "iterator"
749    export *
750
751    module __iterator {
752      module access                { private header "__iterator/access.h" }
753      module advance               { private header "__iterator/advance.h" }
754      module back_insert_iterator  { private header "__iterator/back_insert_iterator.h" }
755      module bounded_iter          { private header "__iterator/bounded_iter.h" }
756      module common_iterator       { private header "__iterator/common_iterator.h" }
757      module concepts              { private header "__iterator/concepts.h" }
758      module counted_iterator      { private header "__iterator/counted_iterator.h" }
759      module data                  { private header "__iterator/data.h" }
760      module default_sentinel      { private header "__iterator/default_sentinel.h" }
761      module distance              { private header "__iterator/distance.h" }
762      module empty                 { private header "__iterator/empty.h" }
763      module erase_if_container    { private header "__iterator/erase_if_container.h" }
764      module front_insert_iterator { private header "__iterator/front_insert_iterator.h" }
765      module incrementable_traits  { private header "__iterator/incrementable_traits.h" }
766      module indirectly_comparable { private header "__iterator/indirectly_comparable.h" }
767      module insert_iterator       { private header "__iterator/insert_iterator.h" }
768      module istream_iterator      { private header "__iterator/istream_iterator.h" }
769      module istreambuf_iterator   { private header "__iterator/istreambuf_iterator.h" }
770      module iter_move             { private header "__iterator/iter_move.h" }
771      module iter_swap             { private header "__iterator/iter_swap.h" }
772      module iterator              { private header "__iterator/iterator.h" }
773      module iterator_traits       { private header "__iterator/iterator_traits.h" }
774      module mergeable             { private header "__iterator/mergeable.h" }
775      module move_iterator         { private header "__iterator/move_iterator.h" }
776      module move_sentinel         { private header "__iterator/move_sentinel.h" }
777      module next                  { private header "__iterator/next.h" }
778      module ostream_iterator      { private header "__iterator/ostream_iterator.h" }
779      module ostreambuf_iterator   {
780        private header "__iterator/ostreambuf_iterator.h"
781        export iosfwd
782      }
783      module permutable            { private header "__iterator/permutable.h" }
784      module prev                  { private header "__iterator/prev.h" }
785      module projected             { private header "__iterator/projected.h" }
786      module readable_traits       { private header "__iterator/readable_traits.h" }
787      module reverse_access        { private header "__iterator/reverse_access.h" }
788      module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
789      module size                  { private header "__iterator/size.h" }
790      module sortable              { private header "__iterator/sortable.h" }
791      module unreachable_sentinel  { private header "__iterator/unreachable_sentinel.h" }
792      module wrap_iter             { private header "__iterator/wrap_iter.h" }
793    }
794  }
795  module latch {
796    @requires_LIBCXX_ENABLE_THREADS@
797    header "latch"
798    export *
799  }
800
801  module __debug_utils {
802    module randomize_range { private header "__debug_utils/randomize_range.h" }
803  }
804
805  module limits {
806    header "limits"
807    export *
808  }
809  module list {
810    header "list"
811    export initializer_list
812    export *
813  }
814  module locale {
815    @requires_LIBCXX_ENABLE_LOCALIZATION@
816    header "locale"
817    export *
818  }
819  module map {
820    header "map"
821    export initializer_list
822    export *
823  }
824  module memory {
825    header "memory"
826    export *
827
828    module __memory {
829      module addressof                       { private header "__memory/addressof.h" }
830      module allocate_at_least               { private header "__memory/allocate_at_least.h" }
831      module allocation_guard                { private header "__memory/allocation_guard.h" }
832      module allocator                       { private header "__memory/allocator.h" }
833      module allocator_arg_t                 { private header "__memory/allocator_arg_t.h" }
834      module allocator_traits                { private header "__memory/allocator_traits.h" }
835      module assume_aligned                  { private header "__memory/assume_aligned.h" }
836      module auto_ptr                        { private header "__memory/auto_ptr.h" }
837      module compressed_pair                 { private header "__memory/compressed_pair.h" }
838      module concepts                        { private header "__memory/concepts.h" }
839      module construct_at                    { private header "__memory/construct_at.h" }
840      module pointer_traits                  { private header "__memory/pointer_traits.h" }
841      module ranges_construct_at             { private header "__memory/ranges_construct_at.h" }
842      module ranges_uninitialized_algorithms { private header "__memory/ranges_uninitialized_algorithms.h" }
843      module raw_storage_iterator            { private header "__memory/raw_storage_iterator.h" }
844      module shared_ptr                      { private header "__memory/shared_ptr.h" }
845      module swap_allocator                  { private header "__memory/swap_allocator.h" }
846      module temporary_buffer                { private header "__memory/temporary_buffer.h" }
847      module uninitialized_algorithms        { private header "__memory/uninitialized_algorithms.h" }
848      module unique_ptr                      { private header "__memory/unique_ptr.h" }
849      module uses_allocator                  { private header "__memory/uses_allocator.h" }
850      module voidify                         { private header "__memory/voidify.h" }
851    }
852  }
853  module mutex {
854    @requires_LIBCXX_ENABLE_THREADS@
855    header "mutex"
856    export *
857  }
858  module new {
859    header "new"
860    export *
861  }
862  module numbers {
863    header "numbers"
864    export *
865  }
866  module numeric {
867    header "numeric"
868    export *
869
870    module __numeric {
871      module accumulate               { private header "__numeric/accumulate.h" }
872      module adjacent_difference      { private header "__numeric/adjacent_difference.h" }
873      module exclusive_scan           { private header "__numeric/exclusive_scan.h" }
874      module gcd_lcm                  { private header "__numeric/gcd_lcm.h" }
875      module inclusive_scan           { private header "__numeric/inclusive_scan.h" }
876      module inner_product            { private header "__numeric/inner_product.h" }
877      module iota                     { private header "__numeric/iota.h" }
878      module midpoint                 { private header "__numeric/midpoint.h" }
879      module partial_sum              { private header "__numeric/partial_sum.h" }
880      module reduce                   { private header "__numeric/reduce.h" }
881      module transform_exclusive_scan { private header "__numeric/transform_exclusive_scan.h" }
882      module transform_inclusive_scan { private header "__numeric/transform_inclusive_scan.h" }
883      module transform_reduce         { private header "__numeric/transform_reduce.h" }
884    }
885  }
886  module optional {
887    header "optional"
888    export *
889  }
890  module ostream {
891    @requires_LIBCXX_ENABLE_LOCALIZATION@
892    header "ostream"
893    // FIXME: should re-export ios, streambuf?
894    export *
895  }
896  module queue {
897    header "queue"
898    export initializer_list
899    export *
900  }
901  module random {
902    header "random"
903    export initializer_list
904    export *
905
906    module __random {
907      module bernoulli_distribution          { private header "__random/bernoulli_distribution.h" }
908      module binomial_distribution           { private header "__random/binomial_distribution.h" }
909      module cauchy_distribution             { private header "__random/cauchy_distribution.h" }
910      module chi_squared_distribution        { private header "__random/chi_squared_distribution.h" }
911      module clamp_to_integral               { private header "__random/clamp_to_integral.h" }
912      module default_random_engine           { private header "__random/default_random_engine.h" }
913      module discard_block_engine            { private header "__random/discard_block_engine.h" }
914      module discrete_distribution           { private header "__random/discrete_distribution.h" }
915      module exponential_distribution        { private header "__random/exponential_distribution.h" }
916      module extreme_value_distribution      { private header "__random/extreme_value_distribution.h" }
917      module fisher_f_distribution           { private header "__random/fisher_f_distribution.h" }
918      module gamma_distribution              { private header "__random/gamma_distribution.h" }
919      module generate_canonical              { private header "__random/generate_canonical.h" }
920      module geometric_distribution          { private header "__random/geometric_distribution.h" }
921      module independent_bits_engine         { private header "__random/independent_bits_engine.h" }
922      module is_seed_sequence                { private header "__random/is_seed_sequence.h" }
923      module is_valid                        { private header "__random/is_valid.h" }
924      module knuth_b                         { private header "__random/knuth_b.h" }
925      module linear_congruential_engine      { private header "__random/linear_congruential_engine.h" }
926      module log2                            { private header "__random/log2.h" }
927      module lognormal_distribution          { private header "__random/lognormal_distribution.h" }
928      module mersenne_twister_engine         { private header "__random/mersenne_twister_engine.h" }
929      module negative_binomial_distribution  { private header "__random/negative_binomial_distribution.h" }
930      module normal_distribution             { private header "__random/normal_distribution.h" }
931      module piecewise_constant_distribution { private header "__random/piecewise_constant_distribution.h" }
932      module piecewise_linear_distribution   { private header "__random/piecewise_linear_distribution.h" }
933      module poisson_distribution            { private header "__random/poisson_distribution.h" }
934      module random_device                   { private header "__random/random_device.h" }
935      module ranlux                          { private header "__random/ranlux.h" }
936      module seed_seq                        { private header "__random/seed_seq.h" }
937      module shuffle_order_engine            { private header "__random/shuffle_order_engine.h" }
938      module student_t_distribution          { private header "__random/student_t_distribution.h" }
939      module subtract_with_carry_engine      { private header "__random/subtract_with_carry_engine.h" }
940      module uniform_int_distribution        { private header "__random/uniform_int_distribution.h" }
941      module uniform_random_bit_generator    { private header "__random/uniform_random_bit_generator.h" }
942      module uniform_real_distribution       { private header "__random/uniform_real_distribution.h" }
943      module weibull_distribution            { private header "__random/weibull_distribution.h" }
944    }
945  }
946  module ranges {
947    header "ranges"
948    export compare
949    export initializer_list
950    export iterator
951    export *
952
953    module __ranges {
954      module access                 { private header "__ranges/access.h" }
955      module all                    {
956        private header "__ranges/all.h"
957        export functional.__functional.compose
958        export functional.__functional.perfect_forward
959      }
960      module common_view            { private header "__ranges/common_view.h" }
961      module concepts               { private header "__ranges/concepts.h" }
962      module copyable_box           { private header "__ranges/copyable_box.h" }
963      module counted                {
964        private header "__ranges/counted.h"
965        export span
966      }
967      module dangling               { private header "__ranges/dangling.h" }
968      module data                   { private header "__ranges/data.h" }
969      module drop_view              { private header "__ranges/drop_view.h" }
970      module empty                  { private header "__ranges/empty.h" }
971      module empty_view             { private header "__ranges/empty_view.h" }
972      module enable_borrowed_range  { private header "__ranges/enable_borrowed_range.h" }
973      module enable_view            { private header "__ranges/enable_view.h" }
974      module filter_view            { private header "__ranges/filter_view.h" }
975      module iota_view              { private header "__ranges/iota_view.h" }
976      module join_view              { private header "__ranges/join_view.h" }
977      module lazy_split_view        { private header "__ranges/lazy_split_view.h" }
978      module non_propagating_cache  { private header "__ranges/non_propagating_cache.h" }
979      module owning_view            { private header "__ranges/owning_view.h" }
980      module range_adaptor          { private header "__ranges/range_adaptor.h" }
981      module rbegin                 { private header "__ranges/rbegin.h" }
982      module ref_view               { private header "__ranges/ref_view.h" }
983      module rend                   { private header "__ranges/rend.h" }
984      module reverse_view           { private header "__ranges/reverse_view.h" }
985      module single_view            { private header "__ranges/single_view.h" }
986      module size                   { private header "__ranges/size.h" }
987      module subrange               { private header "__ranges/subrange.h" }
988      module take_view              { private header "__ranges/take_view.h" }
989      module transform_view         {
990        private header "__ranges/transform_view.h"
991        export functional.__functional.bind_back
992        export functional.__functional.perfect_forward
993      }
994      module view_interface         { private header "__ranges/view_interface.h" }
995      module views                  { private header "__ranges/views.h" }
996      module zip_view               { private header "__ranges/zip_view.h" }
997    }
998  }
999  module ratio {
1000    header "ratio"
1001    export *
1002  }
1003  module regex {
1004    @requires_LIBCXX_ENABLE_LOCALIZATION@
1005    header "regex"
1006    export initializer_list
1007    export *
1008  }
1009  module scoped_allocator {
1010    header "scoped_allocator"
1011    export *
1012  }
1013  module semaphore {
1014    @requires_LIBCXX_ENABLE_THREADS@
1015    header "semaphore"
1016    export *
1017  }
1018  module set {
1019    header "set"
1020    export initializer_list
1021    export *
1022  }
1023  module shared_mutex {
1024    @requires_LIBCXX_ENABLE_THREADS@
1025    header "shared_mutex"
1026    export version
1027  }
1028  module span {
1029    header "span"
1030    export ranges.__ranges.enable_borrowed_range
1031    export version
1032    module span_fwd { private header "__fwd/span.h" }
1033  }
1034  module sstream {
1035    @requires_LIBCXX_ENABLE_LOCALIZATION@
1036    header "sstream"
1037    // FIXME: should re-export istream, ostream, ios, streambuf, string?
1038    export *
1039  }
1040  module stack {
1041    header "stack"
1042    export initializer_list
1043    export *
1044  }
1045  module stdexcept {
1046    header "stdexcept"
1047    export *
1048  }
1049  module streambuf {
1050    @requires_LIBCXX_ENABLE_LOCALIZATION@
1051    header "streambuf"
1052    export *
1053  }
1054  module string {
1055    header "string"
1056    export initializer_list
1057    export string_view
1058    module __string {
1059      module char_traits           { private header "__string/char_traits.h" }
1060      module extern_template_lists { private header "__string/extern_template_lists.h" }
1061    }
1062    export *
1063  }
1064  module string_view {
1065    header "string_view"
1066    export initializer_list
1067    export *
1068    module string_view_fwd { private header "__fwd/string_view.h" }
1069  }
1070  module strstream {
1071    @requires_LIBCXX_ENABLE_LOCALIZATION@
1072    header "strstream"
1073    export *
1074  }
1075  module system_error {
1076    header "system_error"
1077    export *
1078  }
1079  module thread {
1080    @requires_LIBCXX_ENABLE_THREADS@
1081    header "thread"
1082    export *
1083
1084    module __thread {
1085      module poll_with_backoff    { private header "__thread/poll_with_backoff.h" }
1086      module timed_backoff_policy { private header "__thread/timed_backoff_policy.h" }
1087    }
1088  }
1089  module tuple {
1090    header "tuple"
1091    export *
1092  }
1093  module type_traits {
1094    header "type_traits"
1095    export functional.__functional.unwrap_ref
1096    export *
1097
1098    module add_const                          { private header "__type_traits/add_const.h" }
1099    module add_cv                             { private header "__type_traits/add_cv.h" }
1100    module add_lvalue_reference               { private header "__type_traits/add_lvalue_reference.h" }
1101    module add_pointer                        { private header "__type_traits/add_pointer.h" }
1102    module add_rvalue_reference               { private header "__type_traits/add_rvalue_reference.h" }
1103    module add_volatile                       { private header "__type_traits/add_volatile.h" }
1104    module aligned_storage                    { private header "__type_traits/aligned_storage.h" }
1105    module aligned_union                      { private header "__type_traits/aligned_union.h" }
1106    module alignment_of                       { private header "__type_traits/alignment_of.h" }
1107    module apply_cv                           { private header "__type_traits/apply_cv.h" }
1108    module common_reference                   { private header "__type_traits/common_reference.h" }
1109    module common_type                        { private header "__type_traits/common_type.h" }
1110    module conditional                        { private header "__type_traits/conditional.h" }
1111    module conjunction                        { private header "__type_traits/conjunction.h" }
1112    module copy_cv                            { private header "__type_traits/copy_cv.h" }
1113    module copy_cvref                         { private header "__type_traits/copy_cvref.h" }
1114    module decay                              { private header "__type_traits/decay.h" }
1115    module disjunction                        { private header "__type_traits/disjunction.h" }
1116    module enable_if                          { private header "__type_traits/enable_if.h" }
1117    module extent                             { private header "__type_traits/extent.h" }
1118    module has_unique_object_representation   { private header "__type_traits/has_unique_object_representation.h" }
1119    module has_virtual_destructor             { private header "__type_traits/has_virtual_destructor.h" }
1120    module integral_constant                  { private header "__type_traits/integral_constant.h" }
1121    module is_abstract                        { private header "__type_traits/is_abstract.h" }
1122    module is_aggregate                       { private header "__type_traits/is_aggregate.h" }
1123    module is_arithmetic                      { private header "__type_traits/is_arithmetic.h" }
1124    module is_array                           { private header "__type_traits/is_array.h" }
1125    module is_assignable                      { private header "__type_traits/is_assignable.h" }
1126    module is_base_of                         { private header "__type_traits/is_base_of.h" }
1127    module is_bounded_array                   { private header "__type_traits/is_bounded_array.h" }
1128    module is_callable                        { private header "__type_traits/is_callable.h" }
1129    module is_class                           { private header "__type_traits/is_class.h" }
1130    module is_compound                        { private header "__type_traits/is_compound.h" }
1131    module is_const                           { private header "__type_traits/is_const.h" }
1132    module is_constant_evaluated              { private header "__type_traits/is_constant_evaluated.h" }
1133    module is_constructible                   { private header "__type_traits/is_constructible.h" }
1134    module is_convertible                     { private header "__type_traits/is_convertible.h" }
1135    module is_copy_assignable                 { private header "__type_traits/is_copy_assignable.h" }
1136    module is_copy_constructible              { private header "__type_traits/is_copy_constructible.h" }
1137    module is_core_convertible                { private header "__type_traits/is_core_convertible.h" }
1138    module is_default_constructible           { private header "__type_traits/is_default_constructible.h" }
1139    module is_destructible                    { private header "__type_traits/is_destructible.h" }
1140    module is_empty                           { private header "__type_traits/is_empty.h" }
1141    module is_enum                            { private header "__type_traits/is_enum.h" }
1142    module is_final                           { private header "__type_traits/is_final.h" }
1143    module is_floating_point                  { private header "__type_traits/is_floating_point.h" }
1144    module is_function                        { private header "__type_traits/is_function.h" }
1145    module is_fundamental                     { private header "__type_traits/is_fundamental.h" }
1146    module is_integral                        { private header "__type_traits/is_integral.h" }
1147    module is_literal_type                    { private header "__type_traits/is_literal_type.h" }
1148    module is_member_function_pointer         { private header "__type_traits/is_member_function_pointer.h" }
1149    module is_member_object_pointer           { private header "__type_traits/is_member_object_pointer.h" }
1150    module is_member_pointer                  { private header "__type_traits/is_member_pointer.h" }
1151    module is_move_assignable                 { private header "__type_traits/is_move_assignable.h" }
1152    module is_move_constructible              { private header "__type_traits/is_move_constructible.h" }
1153    module is_nothrow_assignable              { private header "__type_traits/is_nothrow_assignable.h" }
1154    module is_nothrow_constructible           { private header "__type_traits/is_nothrow_constructible.h" }
1155    module is_nothrow_convertible             { private header "__type_traits/is_nothrow_convertible.h" }
1156    module is_nothrow_copy_assignable         { private header "__type_traits/is_nothrow_copy_assignable.h" }
1157    module is_nothrow_copy_constructible      { private header "__type_traits/is_nothrow_copy_constructible.h" }
1158    module is_nothrow_default_constructible   { private header "__type_traits/is_nothrow_default_constructible.h" }
1159    module is_nothrow_destructible            { private header "__type_traits/is_nothrow_destructible.h" }
1160    module is_nothrow_move_assignable         { private header "__type_traits/is_nothrow_move_assignable.h" }
1161    module is_nothrow_move_constructible      { private header "__type_traits/is_nothrow_move_constructible.h" }
1162    module is_null_pointer                    { private header "__type_traits/is_null_pointer.h" }
1163    module is_object                          { private header "__type_traits/is_object.h" }
1164    module is_pod                             { private header "__type_traits/is_pod.h" }
1165    module is_pointer                         { private header "__type_traits/is_pointer.h" }
1166    module is_polymorphic                     { private header "__type_traits/is_polymorphic.h" }
1167    module is_primary_template                { private header "__type_traits/is_primary_template.h" }
1168    module is_reference                       { private header "__type_traits/is_reference.h" }
1169    module is_reference_wrapper               { private header "__type_traits/is_reference_wrapper.h" }
1170    module is_referenceable                   { private header "__type_traits/is_referenceable.h" }
1171    module is_same                            { private header "__type_traits/is_same.h" }
1172    module is_scalar                          { private header "__type_traits/is_scalar.h" }
1173    module is_scoped_enum                     { private header "__type_traits/is_scoped_enum.h" }
1174    module is_signed                          { private header "__type_traits/is_signed.h" }
1175    module is_signed_integer                  { private header "__type_traits/is_signed_integer.h" }
1176    module is_standard_layout                 { private header "__type_traits/is_standard_layout.h" }
1177    module is_trivial                         { private header "__type_traits/is_trivial.h" }
1178    module is_trivially_assignable            { private header "__type_traits/is_trivially_assignable.h" }
1179    module is_trivially_constructible         { private header "__type_traits/is_trivially_constructible.h" }
1180    module is_trivially_copy_assignable       { private header "__type_traits/is_trivially_copy_assignable.h" }
1181    module is_trivially_copy_constructible    { private header "__type_traits/is_trivially_copy_constructible.h" }
1182    module is_trivially_copyable              { private header "__type_traits/is_trivially_copyable.h" }
1183    module is_trivially_default_constructible { private header "__type_traits/is_trivially_default_constructible.h" }
1184    module is_trivially_destructible          { private header "__type_traits/is_trivially_destructible.h" }
1185    module is_trivially_move_assignable       { private header "__type_traits/is_trivially_move_assignable.h" }
1186    module is_trivially_move_constructible    { private header "__type_traits/is_trivially_move_constructible.h" }
1187    module is_unbounded_array                 { private header "__type_traits/is_unbounded_array.h" }
1188    module is_union                           { private header "__type_traits/is_union.h" }
1189    module is_unsigned                        { private header "__type_traits/is_unsigned.h" }
1190    module is_unsigned_integer                { private header "__type_traits/is_unsigned_integer.h" }
1191    module is_valid_expansion                 { private header "__type_traits/is_valid_expansion.h" }
1192    module is_void                            { private header "__type_traits/is_void.h" }
1193    module is_volatile                        { private header "__type_traits/is_volatile.h" }
1194    module lazy                               { private header "__type_traits/lazy.h" }
1195    module make_32_64_or_128_bit              { private header "__type_traits/make_32_64_or_128_bit.h" }
1196    module make_signed                        { private header "__type_traits/make_signed.h" }
1197    module make_unsigned                      { private header "__type_traits/make_unsigned.h" }
1198    module nat                                { private header "__type_traits/nat.h" }
1199    module negation                           { private header "__type_traits/negation.h" }
1200    module promote                            { private header "__type_traits/promote.h" }
1201    module rank                               { private header "__type_traits/rank.h" }
1202    module remove_all_extents                 { private header "__type_traits/remove_all_extents.h" }
1203    module remove_const                       { private header "__type_traits/remove_const.h" }
1204    module remove_cv                          { private header "__type_traits/remove_cv.h" }
1205    module remove_cvref                       { private header "__type_traits/remove_cvref.h" }
1206    module remove_extent                      { private header "__type_traits/remove_extent.h" }
1207    module remove_pointer                     { private header "__type_traits/remove_pointer.h" }
1208    module remove_reference                   { private header "__type_traits/remove_reference.h" }
1209    module remove_volatile                    { private header "__type_traits/remove_volatile.h" }
1210    module type_identity                      { private header "__type_traits/type_identity.h" }
1211    module type_list                          { private header "__type_traits/type_list.h" }
1212    module underlying_type                    { private header "__type_traits/underlying_type.h" }
1213    module void_t                             { private header "__type_traits/void_t.h" }
1214  }
1215  module typeindex {
1216    header "typeindex"
1217    export *
1218  }
1219  module typeinfo {
1220    header "typeinfo"
1221    export *
1222  }
1223  module unordered_map {
1224    header "unordered_map"
1225    export initializer_list
1226    export *
1227  }
1228  module unordered_set {
1229    header "unordered_set"
1230    export initializer_list
1231    export *
1232  }
1233  module utility {
1234    header "utility"
1235    export initializer_list
1236    export *
1237
1238    module __utility {
1239      module as_const            { private header "__utility/as_const.h" }
1240      module auto_cast           { private header "__utility/auto_cast.h" }
1241      module cmp                 { private header "__utility/cmp.h" }
1242      module declval             { private header "__utility/declval.h" }
1243      module exchange            { private header "__utility/exchange.h" }
1244      module forward             { private header "__utility/forward.h" }
1245      module in_place            { private header "__utility/in_place.h" }
1246      module integer_sequence    { private header "__utility/integer_sequence.h" }
1247      module move                { private header "__utility/move.h" }
1248      module pair                { private header "__utility/pair.h" }
1249      module piecewise_construct { private header "__utility/piecewise_construct.h" }
1250      module priority_tag        { private header "__utility/priority_tag.h" }
1251      module rel_ops             { private header "__utility/rel_ops.h" }
1252      module swap                { private header "__utility/swap.h" }
1253      module to_underlying       { private header "__utility/to_underlying.h" }
1254      module transaction         { private header "__utility/transaction.h" }
1255      module unreachable         { private header "__utility/unreachable.h" }
1256    }
1257  }
1258  module valarray {
1259    header "valarray"
1260    export initializer_list
1261    export *
1262  }
1263  module variant {
1264    header "variant"
1265    export *
1266
1267    module __variant {
1268      module monostate { private header "__variant/monostate.h" }
1269    }
1270  }
1271  module vector {
1272    header "vector"
1273    export initializer_list
1274    export *
1275  }
1276  module version {
1277    header "version"
1278    export *
1279  }
1280
1281  // FIXME: These should be private.
1282  module __assert            {         header "__assert"            export * }
1283  module __availability      { private header "__availability"      export * }
1284  module __bit_reference     { private header "__bit_reference"     export * }
1285  module __bits              { private header "__bits"              export * }
1286  module __debug             {         header "__debug"             export * }
1287  module __errc              { private header "__errc"              export * }
1288  module __hash_table        {         header "__hash_table"        export * }
1289  module __locale            {
1290    @requires_LIBCXX_ENABLE_LOCALIZATION@
1291    private header "__locale" export *
1292  }
1293  module __mbstate_t         { private header "__mbstate_t.h"       export * }
1294  module __mutex_base        { private header "__mutex_base"        export * }
1295  module __node_handle       { private header "__node_handle"       export * }
1296  module __split_buffer      { private header "__split_buffer"      export * }
1297  module __std_stream        {
1298    @requires_LIBCXX_ENABLE_LOCALIZATION@
1299    private header "__std_stream" export *
1300  }
1301  module __threading_support {         header "__threading_support" export * }
1302  module __tree              {         header "__tree"              export * }
1303  module __tuple             { private header "__tuple"             export * }
1304  module __undef_macros      {         header "__undef_macros"      export * }
1305  module __verbose_abort     {         header "__verbose_abort"     export * }
1306
1307  module experimental {
1308    requires cplusplus11
1309
1310    module algorithm {
1311      header "experimental/algorithm"
1312      export *
1313    }
1314    module coroutine {
1315      requires coroutines
1316      header "experimental/coroutine"
1317      export *
1318    }
1319    module deque {
1320      header "experimental/deque"
1321      export *
1322    }
1323    module forward_list {
1324      header "experimental/forward_list"
1325      export *
1326    }
1327    module functional {
1328      header "experimental/functional"
1329      export *
1330    }
1331    module iterator {
1332      header "experimental/iterator"
1333      export *
1334    }
1335    module list {
1336      header "experimental/list"
1337      export *
1338    }
1339    module map {
1340      header "experimental/map"
1341      export *
1342    }
1343    module memory_resource {
1344      header "experimental/memory_resource"
1345      export *
1346    }
1347    module propagate_const {
1348      header "experimental/propagate_const"
1349      export *
1350    }
1351    module regex {
1352      @requires_LIBCXX_ENABLE_LOCALIZATION@
1353      header "experimental/regex"
1354      export *
1355    }
1356    module simd {
1357      header "experimental/simd"
1358      export *
1359    }
1360    module set {
1361      header "experimental/set"
1362      export *
1363    }
1364    module span {
1365      header "span"
1366      export *
1367    }
1368    module string {
1369      header "experimental/string"
1370      export *
1371    }
1372    module type_traits {
1373      header "experimental/type_traits"
1374      export *
1375    }
1376    module unordered_map {
1377      header "experimental/unordered_map"
1378      export *
1379    }
1380    module unordered_set {
1381      header "experimental/unordered_set"
1382      export *
1383    }
1384    module utility {
1385      header "experimental/utility"
1386      export *
1387    }
1388    module vector {
1389      header "experimental/vector"
1390      export *
1391    }
1392    // FIXME these should be private
1393    module __memory {
1394      header "experimental/__memory"
1395      export *
1396    }
1397  } // end experimental
1398}
1399