@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.224

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. package/c/stdlib.zig +32 -22
  2. package/compiler/aro/aro/Compilation.zig +0 -3
  3. package/compiler/translate-c/ast.zig +5 -2
  4. package/compiler_rt/arm.zig +3 -3
  5. package/compiler_rt/trunctfhf2.zig +3 -0
  6. package/compiler_rt.zig +1 -22
  7. package/docs/wasm/markdown/Parser.zig +5 -9
  8. package/include/__clang_spirv_builtins.h +12 -12
  9. package/include/__float_float.h +176 -0
  10. package/include/__float_header_macro.h +12 -0
  11. package/include/__float_infinity_nan.h +20 -0
  12. package/include/amo.h +131 -0
  13. package/include/amxavx512intrin.h +215 -1
  14. package/include/amxintrin.h +0 -2
  15. package/include/arm_acle.h +37 -27
  16. package/include/arm_neon.h +218 -82
  17. package/include/arm_sme.h +8 -8
  18. package/include/arm_sve.h +4162 -3782
  19. package/include/avx10_2_512bf16intrin.h +19 -12
  20. package/include/avx10_2_512convertintrin.h +1 -1
  21. package/include/avx10_2_512niintrin.h +31 -31
  22. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  23. package/include/avx10_2bf16intrin.h +54 -45
  24. package/include/avx10_2convertintrin.h +2 -2
  25. package/include/avx10_2copyintrin.h +1 -1
  26. package/include/avx10_2niintrin.h +14 -14
  27. package/include/avx10_2satcvtdsintrin.h +2 -2
  28. package/include/avx2intrin.h +275 -377
  29. package/include/avx512bf16intrin.h +25 -16
  30. package/include/avx512bitalgintrin.h +19 -30
  31. package/include/avx512bwintrin.h +386 -505
  32. package/include/avx512cdintrin.h +42 -55
  33. package/include/avx512dqintrin.h +132 -161
  34. package/include/avx512fintrin.h +1015 -1424
  35. package/include/avx512fp16intrin.h +112 -110
  36. package/include/avx512ifmaintrin.h +32 -34
  37. package/include/avx512ifmavlintrin.h +73 -46
  38. package/include/avx512vbmi2intrin.h +43 -32
  39. package/include/avx512vbmiintrin.h +19 -27
  40. package/include/avx512vbmivlintrin.h +35 -49
  41. package/include/avx512vlbf16intrin.h +32 -22
  42. package/include/avx512vlbitalgintrin.h +37 -53
  43. package/include/avx512vlbwintrin.h +470 -573
  44. package/include/avx512vlcdintrin.h +74 -102
  45. package/include/avx512vldqintrin.h +110 -127
  46. package/include/avx512vlfp16intrin.h +130 -111
  47. package/include/avx512vlintrin.h +945 -1299
  48. package/include/avx512vlvbmi2intrin.h +78 -63
  49. package/include/avx512vlvnniintrin.h +21 -18
  50. package/include/avx512vlvp2intersectintrin.h +2 -2
  51. package/include/avx512vnniintrin.h +10 -10
  52. package/include/avx512vp2intersectintrin.h +1 -2
  53. package/include/avx512vpopcntdqintrin.h +8 -10
  54. package/include/avx512vpopcntdqvlintrin.h +17 -15
  55. package/include/avxifmaintrin.h +16 -0
  56. package/include/avxintrin.h +165 -241
  57. package/include/avxvnniint16intrin.h +118 -99
  58. package/include/avxvnniint8intrin.h +56 -32
  59. package/include/avxvnniintrin.h +16 -8
  60. package/include/cpuid.h +101 -4
  61. package/include/emmintrin.h +168 -168
  62. package/include/f16cintrin.h +23 -9
  63. package/include/float.h +16 -155
  64. package/include/fma4intrin.h +98 -96
  65. package/include/fmaintrin.h +96 -66
  66. package/include/gfniintrin.h +21 -16
  67. package/include/hexagon_types.h +23 -20
  68. package/include/hvx_hexagon_protos.h +649 -860
  69. package/include/immintrin.h +0 -12
  70. package/include/intrin.h +4 -0
  71. package/include/lasxintrin.h +113 -0
  72. package/include/llvm_libc_wrappers/assert.h +3 -5
  73. package/include/llvm_libc_wrappers/ctype.h +3 -115
  74. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  75. package/include/llvm_libc_wrappers/stdio.h +10 -38
  76. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  77. package/include/llvm_libc_wrappers/string.h +2 -70
  78. package/include/llvm_libc_wrappers/time.h +4 -10
  79. package/include/mmintrin.h +188 -257
  80. package/include/module.modulemap +23 -4
  81. package/include/movrs_avx10_2_512intrin.h +2 -2
  82. package/include/movrs_avx10_2intrin.h +4 -4
  83. package/include/pmmintrin.h +12 -24
  84. package/include/ptrauth.h +16 -2
  85. package/include/riscv_mips.h +34 -0
  86. package/include/riscv_nds.h +89 -0
  87. package/include/sifive_vector.h +58 -2
  88. package/include/sm4evexintrin.h +2 -2
  89. package/include/smmintrin.h +77 -59
  90. package/include/spirvintrin.h +194 -0
  91. package/include/stddefer.h +19 -0
  92. package/include/tmmintrin.h +116 -147
  93. package/include/vaesintrin.h +1 -2
  94. package/include/xmmintrin.h +44 -70
  95. package/include/xopintrin.h +20 -10
  96. package/libcxx/include/__algorithm/all_of.h +11 -5
  97. package/libcxx/include/__algorithm/comp.h +4 -0
  98. package/libcxx/include/__algorithm/copy.h +28 -147
  99. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  100. package/libcxx/include/__algorithm/copy_n.h +50 -16
  101. package/libcxx/include/__algorithm/count.h +2 -2
  102. package/libcxx/include/__algorithm/equal.h +43 -55
  103. package/libcxx/include/__algorithm/fill.h +26 -8
  104. package/libcxx/include/__algorithm/fill_n.h +32 -46
  105. package/libcxx/include/__algorithm/find.h +96 -39
  106. package/libcxx/include/__algorithm/find_end.h +105 -0
  107. package/libcxx/include/__algorithm/for_each.h +18 -24
  108. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  109. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  110. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  111. package/libcxx/include/__algorithm/generate.h +4 -2
  112. package/libcxx/include/__algorithm/generate_n.h +19 -6
  113. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  114. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  115. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  116. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  117. package/libcxx/include/__algorithm/make_heap.h +16 -4
  118. package/libcxx/include/__algorithm/mismatch.h +2 -2
  119. package/libcxx/include/__algorithm/move.h +8 -19
  120. package/libcxx/include/__algorithm/move_backward.h +9 -24
  121. package/libcxx/include/__algorithm/none_of.h +4 -4
  122. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  123. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  124. package/libcxx/include/__algorithm/pstl.h +9 -9
  125. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  126. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  127. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  128. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  129. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  130. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  131. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  132. package/libcxx/include/__algorithm/rotate.h +27 -44
  133. package/libcxx/include/__algorithm/search_n.h +49 -37
  134. package/libcxx/include/__algorithm/sift_down.h +19 -18
  135. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  136. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  137. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  138. package/libcxx/include/__assertion_handler +31 -4
  139. package/libcxx/include/__atomic/atomic.h +36 -60
  140. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  141. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  142. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  143. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  144. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  145. package/libcxx/include/__atomic/contention_t.h +27 -3
  146. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  147. package/libcxx/include/__bit/countl.h +1 -2
  148. package/libcxx/include/__bit/countr.h +1 -2
  149. package/libcxx/include/__bit/has_single_bit.h +1 -1
  150. package/libcxx/include/__bit/popcount.h +0 -1
  151. package/libcxx/include/__bit/rotate.h +15 -26
  152. package/libcxx/include/__bit_reference +207 -18
  153. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  154. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  155. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  156. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  157. package/libcxx/include/__charconv/traits.h +3 -24
  158. package/libcxx/include/__chrono/day.h +11 -0
  159. package/libcxx/include/__chrono/duration.h +58 -33
  160. package/libcxx/include/__chrono/file_clock.h +4 -2
  161. package/libcxx/include/__chrono/is_clock.h +72 -0
  162. package/libcxx/include/__chrono/leap_second.h +13 -0
  163. package/libcxx/include/__chrono/month.h +13 -0
  164. package/libcxx/include/__chrono/month_weekday.h +22 -0
  165. package/libcxx/include/__chrono/monthday.h +20 -0
  166. package/libcxx/include/__chrono/steady_clock.h +1 -1
  167. package/libcxx/include/__chrono/system_clock.h +3 -3
  168. package/libcxx/include/__chrono/time_point.h +37 -13
  169. package/libcxx/include/__chrono/weekday.h +25 -0
  170. package/libcxx/include/__chrono/year.h +11 -0
  171. package/libcxx/include/__chrono/year_month.h +13 -0
  172. package/libcxx/include/__chrono/year_month_day.h +23 -0
  173. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  174. package/libcxx/include/__chrono/zoned_time.h +16 -0
  175. package/libcxx/include/__compare/is_eq.h +6 -6
  176. package/libcxx/include/__compare/strong_order.h +12 -30
  177. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  178. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  179. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  180. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  181. package/libcxx/include/__config +63 -280
  182. package/libcxx/include/__configuration/abi.h +14 -24
  183. package/libcxx/include/__configuration/availability.h +65 -118
  184. package/libcxx/include/__configuration/compiler.h +6 -6
  185. package/libcxx/include/__configuration/experimental.h +38 -0
  186. package/libcxx/include/__configuration/hardening.h +215 -0
  187. package/libcxx/include/__configuration/language.h +3 -0
  188. package/libcxx/include/__configuration/platform.h +9 -16
  189. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  190. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  191. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  192. package/libcxx/include/__exception/exception.h +6 -4
  193. package/libcxx/include/__exception/exception_ptr.h +27 -5
  194. package/libcxx/include/__exception/nested_exception.h +2 -2
  195. package/libcxx/include/__exception/operations.h +5 -5
  196. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  197. package/libcxx/include/__expected/expected.h +62 -64
  198. package/libcxx/include/__expected/unexpected.h +4 -4
  199. package/libcxx/include/__filesystem/copy_options.h +4 -4
  200. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  201. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  202. package/libcxx/include/__filesystem/directory_options.h +7 -4
  203. package/libcxx/include/__filesystem/file_status.h +3 -3
  204. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  205. package/libcxx/include/__filesystem/operations.h +97 -66
  206. package/libcxx/include/__filesystem/path.h +68 -64
  207. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  208. package/libcxx/include/__filesystem/perm_options.h +4 -4
  209. package/libcxx/include/__filesystem/perms.h +4 -4
  210. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  211. package/libcxx/include/__filesystem/space_info.h +1 -1
  212. package/libcxx/include/__filesystem/u8path.h +12 -14
  213. package/libcxx/include/__flat_map/flat_map.h +88 -71
  214. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  215. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  216. package/libcxx/include/__flat_map/utils.h +1 -0
  217. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  218. package/libcxx/include/__flat_set/flat_set.h +86 -68
  219. package/libcxx/include/__format/concepts.h +0 -14
  220. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  221. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  222. package/libcxx/include/__format/format_arg.h +7 -10
  223. package/libcxx/include/__format/format_args.h +1 -1
  224. package/libcxx/include/__format/format_context.h +5 -5
  225. package/libcxx/include/__format/format_parse_context.h +2 -2
  226. package/libcxx/include/__format/formatter_output.h +30 -34
  227. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  228. package/libcxx/include/__format/range_default_formatter.h +2 -41
  229. package/libcxx/include/__format/range_format.h +71 -0
  230. package/libcxx/include/__format/range_formatter.h +1 -0
  231. package/libcxx/include/__format/width_estimation_table.h +4 -2
  232. package/libcxx/include/__functional/bind.h +10 -15
  233. package/libcxx/include/__functional/bind_back.h +1 -1
  234. package/libcxx/include/__functional/bind_front.h +1 -1
  235. package/libcxx/include/__functional/function.h +57 -75
  236. package/libcxx/include/__functional/hash.h +1 -10
  237. package/libcxx/include/__functional/identity.h +1 -1
  238. package/libcxx/include/__functional/is_transparent.h +8 -0
  239. package/libcxx/include/__functional/mem_fn.h +2 -1
  240. package/libcxx/include/__functional/operations.h +18 -0
  241. package/libcxx/include/__functional/ranges_operations.h +7 -0
  242. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  243. package/libcxx/include/__functional/weak_result_type.h +14 -28
  244. package/libcxx/include/__fwd/ios.h +1 -1
  245. package/libcxx/include/__fwd/tuple.h +14 -0
  246. package/libcxx/include/__hash_table +371 -357
  247. package/libcxx/include/__ios/fpos.h +4 -4
  248. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  249. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  250. package/libcxx/include/__iterator/concepts.h +6 -9
  251. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  252. package/libcxx/include/__iterator/distance.h +40 -18
  253. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  254. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  255. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  256. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  257. package/libcxx/include/__iterator/iter_move.h +1 -1
  258. package/libcxx/include/__iterator/iterator.h +13 -0
  259. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  260. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  261. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  262. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  263. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  264. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  265. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  266. package/libcxx/include/__locale +3 -10
  267. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  268. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  269. package/libcxx/include/__locale_dir/messages.h +1 -1
  270. package/libcxx/include/__locale_dir/money.h +2 -2
  271. package/libcxx/include/__locale_dir/num.h +190 -243
  272. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  273. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  274. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  275. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  276. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  277. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  278. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  279. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  280. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  281. package/libcxx/include/__locale_dir/time.h +3 -7
  282. package/libcxx/include/__math/hypot.h +1 -1
  283. package/libcxx/include/__math/logarithms.h +1 -1
  284. package/libcxx/include/__math/traits.h +80 -11
  285. package/libcxx/include/__mdspan/extents.h +7 -4
  286. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  287. package/libcxx/include/__mdspan/mdspan.h +29 -23
  288. package/libcxx/include/__memory/addressof.h +7 -5
  289. package/libcxx/include/__memory/align.h +18 -1
  290. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  291. package/libcxx/include/__memory/allocator.h +14 -26
  292. package/libcxx/include/__memory/allocator_traits.h +6 -4
  293. package/libcxx/include/__memory/compressed_pair.h +15 -9
  294. package/libcxx/include/__memory/construct_at.h +12 -23
  295. package/libcxx/include/__memory/inout_ptr.h +1 -1
  296. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  297. package/libcxx/include/__memory/out_ptr.h +1 -1
  298. package/libcxx/include/__memory/pointer_traits.h +1 -1
  299. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  300. package/libcxx/include/__memory/shared_count.h +9 -30
  301. package/libcxx/include/__memory/shared_ptr.h +100 -145
  302. package/libcxx/include/__memory/temp_value.h +1 -2
  303. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  304. package/libcxx/include/__memory/unique_ptr.h +14 -16
  305. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  306. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  307. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  308. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  309. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  310. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  311. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  312. package/libcxx/include/__mutex/mutex.h +2 -2
  313. package/libcxx/include/__mutex/once_flag.h +14 -11
  314. package/libcxx/include/__mutex/tag_types.h +3 -3
  315. package/libcxx/include/__mutex/unique_lock.h +8 -7
  316. package/libcxx/include/__new/align_val_t.h +6 -0
  317. package/libcxx/include/__new/allocate.h +1 -2
  318. package/libcxx/include/__new/exceptions.h +8 -2
  319. package/libcxx/include/__new/global_new_delete.h +4 -11
  320. package/libcxx/include/__new/interference_size.h +0 -4
  321. package/libcxx/include/__new/launder.h +3 -5
  322. package/libcxx/include/__new/nothrow_t.h +1 -1
  323. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  324. package/libcxx/include/__numeric/midpoint.h +9 -14
  325. package/libcxx/include/__numeric/pstl.h +2 -2
  326. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  327. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  328. package/libcxx/include/__pstl/backends/default.h +14 -14
  329. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  330. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  331. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  332. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  333. package/libcxx/include/__random/binomial_distribution.h +10 -4
  334. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  335. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  336. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  337. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  338. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  339. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  340. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  341. package/libcxx/include/__ranges/common_view.h +7 -7
  342. package/libcxx/include/__ranges/drop_view.h +8 -8
  343. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  344. package/libcxx/include/__ranges/elements_of.h +49 -0
  345. package/libcxx/include/__ranges/empty_view.h +5 -5
  346. package/libcxx/include/__ranges/filter_view.h +10 -10
  347. package/libcxx/include/__ranges/iota_view.h +41 -22
  348. package/libcxx/include/__ranges/owning_view.h +15 -15
  349. package/libcxx/include/__ranges/ref_view.h +6 -6
  350. package/libcxx/include/__ranges/repeat_view.h +17 -10
  351. package/libcxx/include/__ranges/single_view.h +8 -8
  352. package/libcxx/include/__ranges/take_view.h +9 -9
  353. package/libcxx/include/__ranges/transform_view.h +1 -2
  354. package/libcxx/include/__ranges/view_interface.h +10 -10
  355. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  356. package/libcxx/include/__ranges/zip_view.h +20 -20
  357. package/libcxx/include/__split_buffer +612 -240
  358. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  359. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  360. package/libcxx/include/__stop_token/stop_source.h +1 -1
  361. package/libcxx/include/__stop_token/stop_state.h +4 -4
  362. package/libcxx/include/__stop_token/stop_token.h +1 -1
  363. package/libcxx/include/__string/char_traits.h +51 -31
  364. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  365. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  366. package/libcxx/include/__system_error/error_category.h +8 -8
  367. package/libcxx/include/__system_error/error_code.h +5 -5
  368. package/libcxx/include/__system_error/error_condition.h +4 -4
  369. package/libcxx/include/__system_error/system_error.h +1 -1
  370. package/libcxx/include/__thread/id.h +1 -1
  371. package/libcxx/include/__thread/jthread.h +1 -1
  372. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  373. package/libcxx/include/__thread/support/c11.h +8 -8
  374. package/libcxx/include/__thread/support/pthread.h +8 -8
  375. package/libcxx/include/__thread/support/windows.h +8 -8
  376. package/libcxx/include/__thread/thread.h +13 -8
  377. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  378. package/libcxx/include/__tree +849 -701
  379. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  380. package/libcxx/include/__tuple/tuple_element.h +0 -12
  381. package/libcxx/include/__tuple/tuple_size.h +0 -4
  382. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  383. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  384. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  385. package/libcxx/include/__type_traits/invoke.h +8 -0
  386. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  387. package/libcxx/include/__type_traits/is_array.h +26 -0
  388. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  389. package/libcxx/include/__type_traits/is_final.h +1 -1
  390. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  391. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  392. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  393. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  394. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  395. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  396. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  397. package/libcxx/include/__utility/cmp.h +19 -7
  398. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  399. package/libcxx/include/__utility/in_place.h +1 -1
  400. package/libcxx/include/__utility/integer_sequence.h +56 -41
  401. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  402. package/libcxx/include/__utility/pair.h +22 -25
  403. package/libcxx/include/__utility/scope_guard.h +2 -0
  404. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  405. package/libcxx/include/__vector/vector.h +187 -160
  406. package/libcxx/include/__vector/vector_bool.h +76 -83
  407. package/libcxx/include/any +118 -155
  408. package/libcxx/include/array +88 -56
  409. package/libcxx/include/atomic +2 -0
  410. package/libcxx/include/barrier +20 -24
  411. package/libcxx/include/bitset +49 -30
  412. package/libcxx/include/ccomplex +3 -11
  413. package/libcxx/include/chrono +47 -0
  414. package/libcxx/include/ciso646 +3 -6
  415. package/libcxx/include/complex +77 -65
  416. package/libcxx/include/complex.h +10 -10
  417. package/libcxx/include/condition_variable +3 -3
  418. package/libcxx/include/cstdalign +3 -10
  419. package/libcxx/include/cstdbool +3 -10
  420. package/libcxx/include/ctgmath +2 -11
  421. package/libcxx/include/ctype.h +24 -24
  422. package/libcxx/include/cwchar +2 -2
  423. package/libcxx/include/deque +109 -225
  424. package/libcxx/include/errno.h +269 -269
  425. package/libcxx/include/exception +4 -1
  426. package/libcxx/include/ext/hash_map +7 -48
  427. package/libcxx/include/ext/hash_set +2 -8
  428. package/libcxx/include/fenv.h +43 -43
  429. package/libcxx/include/flat_map +663 -11
  430. package/libcxx/include/flat_set +543 -8
  431. package/libcxx/include/float.h +16 -16
  432. package/libcxx/include/forward_list +33 -53
  433. package/libcxx/include/fstream +57 -42
  434. package/libcxx/include/future +41 -51
  435. package/libcxx/include/initializer_list +9 -3
  436. package/libcxx/include/inttypes.h +16 -16
  437. package/libcxx/include/ios +28 -28
  438. package/libcxx/include/istream +19 -13
  439. package/libcxx/include/iterator +10 -0
  440. package/libcxx/include/latch +7 -5
  441. package/libcxx/include/limits +4 -4
  442. package/libcxx/include/list +61 -79
  443. package/libcxx/include/map +386 -274
  444. package/libcxx/include/math.h +19 -0
  445. package/libcxx/include/mdspan +1 -5
  446. package/libcxx/include/mutex +29 -19
  447. package/libcxx/include/optional +644 -149
  448. package/libcxx/include/print +9 -5
  449. package/libcxx/include/queue +39 -37
  450. package/libcxx/include/ranges +48 -0
  451. package/libcxx/include/regex +33 -31
  452. package/libcxx/include/scoped_allocator +16 -11
  453. package/libcxx/include/semaphore +15 -18
  454. package/libcxx/include/set +220 -192
  455. package/libcxx/include/shared_mutex +3 -8
  456. package/libcxx/include/span +53 -37
  457. package/libcxx/include/sstream +34 -28
  458. package/libcxx/include/stack +13 -15
  459. package/libcxx/include/stddef.h +10 -10
  460. package/libcxx/include/stdexcept +2 -2
  461. package/libcxx/include/stdio.h +20 -21
  462. package/libcxx/include/streambuf +59 -19
  463. package/libcxx/include/string +574 -573
  464. package/libcxx/include/string_view +113 -89
  465. package/libcxx/include/strstream +10 -10
  466. package/libcxx/include/syncstream +4 -4
  467. package/libcxx/include/tgmath.h +12 -12
  468. package/libcxx/include/tuple +242 -212
  469. package/libcxx/include/type_traits +8 -2
  470. package/libcxx/include/typeindex +5 -3
  471. package/libcxx/include/typeinfo +92 -89
  472. package/libcxx/include/unordered_map +179 -304
  473. package/libcxx/include/unordered_set +168 -195
  474. package/libcxx/include/utility +12 -0
  475. package/libcxx/include/valarray +106 -161
  476. package/libcxx/include/variant +25 -33
  477. package/libcxx/include/version +41 -24
  478. package/libcxx/include/wctype.h +29 -29
  479. package/libcxx/libc/hdr/errno_macros.h +3 -1
  480. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  481. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  482. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  483. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  484. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  485. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  486. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  487. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  488. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  489. package/libcxx/libc/shared/libc_common.h +5 -0
  490. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  491. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  492. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  493. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  494. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  495. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  496. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  497. package/libcxx/libc/src/__support/big_int.h +14 -14
  498. package/libcxx/libc/src/__support/common.h +3 -2
  499. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  500. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  501. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  502. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  503. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  504. package/libcxx/libc/src/__support/macros/config.h +23 -0
  505. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  506. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  507. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  508. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  509. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  510. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  511. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  512. package/libcxx/libc/src/__support/math_extras.h +20 -4
  513. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  514. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  515. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  516. package/libcxx/src/any.cpp +4 -0
  517. package/libcxx/src/atomic.cpp +365 -80
  518. package/libcxx/src/barrier.cpp +4 -3
  519. package/libcxx/src/charconv.cpp +6 -3
  520. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  521. package/libcxx/src/error_category.cpp +3 -1
  522. package/libcxx/src/exception.cpp +2 -10
  523. package/libcxx/src/experimental/time_zone.cpp +1 -1
  524. package/libcxx/src/experimental/tzdb.cpp +4 -1
  525. package/libcxx/src/filesystem/error.h +4 -22
  526. package/libcxx/src/filesystem/format_string.h +9 -18
  527. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  528. package/libcxx/src/filesystem/operations.cpp +2 -9
  529. package/libcxx/src/filesystem/path.cpp +3 -1
  530. package/libcxx/src/include/aligned_alloc.h +65 -0
  531. package/libcxx/src/include/config_elast.h +1 -1
  532. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  533. package/libcxx/src/include/overridable_function.h +8 -10
  534. package/libcxx/src/iostream.cpp +56 -37
  535. package/libcxx/src/locale.cpp +213 -196
  536. package/libcxx/src/memory.cpp +12 -14
  537. package/libcxx/src/mutex_destructor.cpp +1 -1
  538. package/libcxx/src/new.cpp +5 -5
  539. package/libcxx/src/optional.cpp +4 -0
  540. package/libcxx/src/print.cpp +9 -1
  541. package/libcxx/src/random.cpp +0 -26
  542. package/libcxx/src/string.cpp +10 -25
  543. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  544. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  545. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  546. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  547. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  548. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  549. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  550. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  551. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  552. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  553. package/libcxx/src/system_error.cpp +2 -0
  554. package/libcxx/src/thread.cpp +1 -3
  555. package/libcxx/src/valarray.cpp +1 -2
  556. package/libcxx/src/vector.cpp +2 -2
  557. package/libcxxabi/include/__cxxabi_config.h +42 -23
  558. package/libcxxabi/src/cxa_exception.cpp +4 -2
  559. package/libcxxabi/src/cxa_exception.h +16 -14
  560. package/libcxxabi/src/cxa_personality.cpp +126 -9
  561. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  562. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  563. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  564. package/libcxxabi/src/demangle/Utility.h +21 -7
  565. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  566. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  567. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  568. package/libtsan/LICENSE.TXT +311 -0
  569. package/libtsan/builtins/assembly.h +41 -8
  570. package/libtsan/interception/interception_win.cpp +4 -0
  571. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  572. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  573. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  574. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  575. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  576. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  577. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  578. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  579. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  580. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  581. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  582. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  583. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  584. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  585. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  586. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  587. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  588. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  589. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  590. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  591. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  592. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  593. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  594. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  595. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  596. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  597. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  598. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  599. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  600. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  601. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  602. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  603. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  604. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  605. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  606. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  607. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  608. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  609. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  610. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  611. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  612. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  613. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  614. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  615. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  616. package/libtsan/tsan_debugging.cpp +2 -2
  617. package/libtsan/tsan_flags.cpp +37 -0
  618. package/libtsan/tsan_flags.h +8 -0
  619. package/libtsan/tsan_flags.inc +12 -0
  620. package/libtsan/tsan_interceptors.h +9 -1
  621. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  622. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  623. package/libtsan/tsan_interface.h +3 -3
  624. package/libtsan/tsan_interface_ann.cpp +23 -9
  625. package/libtsan/tsan_mman.cpp +18 -4
  626. package/libtsan/tsan_platform.h +44 -7
  627. package/libtsan/tsan_platform_linux.cpp +42 -14
  628. package/libtsan/tsan_platform_mac.cpp +16 -3
  629. package/libtsan/tsan_report.h +14 -1
  630. package/libtsan/tsan_rtl.cpp +14 -0
  631. package/libtsan/tsan_rtl.h +7 -2
  632. package/libtsan/tsan_rtl_aarch64.S +3 -5
  633. package/libtsan/tsan_rtl_access.cpp +8 -3
  634. package/libtsan/tsan_rtl_amd64.S +2 -0
  635. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  636. package/libtsan/tsan_rtl_report.cpp +132 -65
  637. package/libtsan/tsan_rtl_thread.cpp +31 -9
  638. package/libtsan/tsan_symbolize.cpp +1 -1
  639. package/libtsan/tsan_symbolize.h +1 -1
  640. package/libtsan/tsan_trace.h +1 -1
  641. package/libunwind/include/__libunwind_config.h +11 -2
  642. package/libunwind/include/libunwind.h +117 -11
  643. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  644. package/libunwind/src/AddressSpace.hpp +42 -20
  645. package/libunwind/src/CompactUnwinder.hpp +16 -5
  646. package/libunwind/src/DwarfInstructions.hpp +24 -13
  647. package/libunwind/src/DwarfParser.hpp +62 -23
  648. package/libunwind/src/EHHeaderParser.hpp +7 -4
  649. package/libunwind/src/Registers.hpp +226 -22
  650. package/libunwind/src/Unwind-seh.cpp +6 -7
  651. package/libunwind/src/Unwind-wasm.c +7 -7
  652. package/libunwind/src/UnwindCursor.hpp +167 -49
  653. package/libunwind/src/UnwindLevel1.c +46 -17
  654. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  655. package/libunwind/src/UnwindRegistersSave.S +86 -2
  656. package/libunwind/src/assembly.h +5 -1
  657. package/libunwind/src/config.h +9 -0
  658. package/libunwind/src/gcc_personality_v0.c +79 -6
  659. package/libunwind/src/libunwind.cpp +104 -4
  660. package/libunwind/src/libunwind_ext.h +7 -1
  661. package/libunwind/src/shadow_stack_unwind.h +2 -2
  662. package/lldb/pretty_printers.py +948 -0
  663. package/package.json +1 -1
  664. package/std/Build/Step/Compile.zig +18 -19
  665. package/std/Build/Step/Run.zig +13 -6
  666. package/std/Build/Step.zig +0 -3
  667. package/std/Io/Threaded.zig +3 -0
  668. package/std/Target/aarch64.zig +620 -77
  669. package/std/Target/amdgcn.zig +421 -21
  670. package/std/Target/arm.zig +40 -6
  671. package/std/Target/bpf.zig +6 -0
  672. package/std/Target/hexagon.zig +41 -6
  673. package/std/Target/loongarch.zig +18 -0
  674. package/std/Target/mips.zig +6 -0
  675. package/std/Target/nvptx.zig +58 -35
  676. package/std/Target/powerpc.zig +27 -19
  677. package/std/Target/riscv.zig +415 -177
  678. package/std/Target/sparc.zig +17 -0
  679. package/std/Target/wasm.zig +7 -0
  680. package/std/Target/x86.zig +200 -31
  681. package/std/Target/xtensa.zig +65 -0
  682. package/std/Target.zig +16 -8
  683. package/std/c.zig +7 -0
  684. package/std/crypto/ml_kem.zig +0 -15
  685. package/std/debug/Dwarf.zig +14 -11
  686. package/std/debug/Pdb.zig +24 -16
  687. package/std/hash/xxhash.zig +0 -6
  688. package/std/math/log10.zig +0 -2
  689. package/std/math/modf.zig +1 -2
  690. package/std/mem.zig +1 -2
  691. package/std/os/linux/x86.zig +2 -2
  692. package/std/os/windows.zig +130 -1
  693. package/std/simd.zig +4 -21
  694. package/std/start.zig +4 -3
  695. package/std/zig/Ast.zig +5 -7
  696. package/std/zig/AstGen.zig +20 -14
  697. package/std/zig/ErrorBundle.zig +6 -2
  698. package/std/zig/ZonGen.zig +13 -21
  699. package/std/zig/llvm/Builder.zig +2 -2
  700. package/std/zig/system/arm.zig +56 -2
  701. package/std/zig/system/windows.zig +34 -1
  702. package/std/zig/system/x86.zig +60 -16
  703. package/std/zig/system.zig +0 -10
  704. package/std/zig/target.zig +1 -2
  705. package/std/zon/parse.zig +1 -1
  706. package/include/amxbf16transposeintrin.h +0 -94
  707. package/include/amxcomplextransposeintrin.h +0 -303
  708. package/include/amxfp16transposeintrin.h +0 -94
  709. package/include/amxmovrstransposeintrin.h +0 -200
  710. package/include/amxtf32transposeintrin.h +0 -105
  711. package/include/amxtransposeintrin.h +0 -248
  712. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  713. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -17,30 +17,565 @@
17
17
  #include <initializer_list> // see [initializer.list.syn]
18
18
 
19
19
  namespace std {
20
+ struct sorted_unique_t { explicit sorted_unique_t() = default; };
21
+ inline constexpr sorted_unique_t sorted_unique{};
22
+
20
23
  // [flat.set], class template flat_set
21
24
  template<class Key, class Compare = less<Key>, class KeyContainer = vector<Key>>
22
- class flat_set;
25
+ class flat_set {
26
+ public:
27
+ // types
28
+ using key_type = Key;
29
+ using value_type = Key;
30
+ using key_compare = Compare;
31
+ using value_compare = Compare;
32
+ using reference = value_type&;
33
+ using const_reference = const value_type&;
34
+ using size_type = KeyContainer::size_type;
35
+ using difference_type = KeyContainer::difference_type;
36
+ using iterator = implementation-defined; // see [container.requirements]
37
+ using const_iterator = implementation-defined; // see [container.requirements]
38
+ using reverse_iterator = std::reverse_iterator<iterator>;
39
+ using const_reverse_iterator = std::reverse_iterator<const_iterator>;
40
+ using container_type = KeyContainer;
23
41
 
24
- struct sorted_unique_t { explicit sorted_unique_t() = default; };
25
- inline constexpr sorted_unique_t sorted_unique{};
42
+ // [flat.set.cons], constructors
43
+ constexpr flat_set() : flat_set(key_compare()) { }
44
+
45
+ constexpr flat_set(const flat_set&);
46
+ constexpr flat_set(flat_set&&);
47
+ constexpr flat_set& operator=(const flat_set&);
48
+ constexpr flat_set& operator=(flat_set&&);
49
+
50
+ constexpr explicit flat_set(const key_compare& comp)
51
+ : c(), compare(comp) { }
52
+
53
+ constexpr explicit flat_set(container_type cont, const key_compare& comp = key_compare());
54
+
55
+ constexpr flat_set(sorted_unique_t, container_type cont,
56
+ const key_compare& comp = key_compare())
57
+ : c(std::move(cont)), compare(comp) { }
58
+
59
+ template<class InputIterator>
60
+ constexpr flat_set(InputIterator first, InputIterator last,
61
+ const key_compare& comp = key_compare())
62
+ : c(), compare(comp)
63
+ { insert(first, last); }
64
+
65
+ template<class InputIterator>
66
+ constexpr flat_set(sorted_unique_t, InputIterator first, InputIterator last,
67
+ const key_compare& comp = key_compare())
68
+ : c(first, last), compare(comp) { }
69
+
70
+ template<container-compatible-range<value_type> R>
71
+ constexpr flat_set(from_range_t, R&& rg)
72
+ : flat_set(from_range, std::forward<R>(rg), key_compare()) { }
73
+ template<container-compatible-range<value_type> R>
74
+ constexpr flat_set(from_range_t, R&& rg, const key_compare& comp)
75
+ : flat_set(comp)
76
+ { insert_range(std::forward<R>(rg)); }
77
+
78
+ constexpr flat_set(initializer_list<value_type> il, const key_compare& comp = key_compare())
79
+ : flat_set(il.begin(), il.end(), comp) { }
80
+
81
+ constexpr flat_set(sorted_unique_t, initializer_list<value_type> il,
82
+ const key_compare& comp = key_compare())
83
+ : flat_set(sorted_unique, il.begin(), il.end(), comp) { }
84
+
85
+ // [flat.set.cons.alloc], constructors with allocators
86
+
87
+ template<class Alloc>
88
+ constexpr explicit flat_set(const Alloc& a);
89
+ template<class Alloc>
90
+ constexpr flat_set(const key_compare& comp, const Alloc& a);
91
+ template<class Alloc>
92
+ constexpr flat_set(const container_type& cont, const Alloc& a);
93
+ template<class Alloc>
94
+ constexpr flat_set(const container_type& cont, const key_compare& comp, const Alloc& a);
95
+ template<class Alloc>
96
+ constexpr flat_set(sorted_unique_t, const container_type& cont, const Alloc& a);
97
+ template<class Alloc>
98
+ constexpr flat_set(sorted_unique_t, const container_type& cont,
99
+ const key_compare& comp, const Alloc& a);
100
+ template<class Alloc>
101
+ constexpr flat_set(const flat_set&, const Alloc& a);
102
+ template<class Alloc>
103
+ constexpr flat_set(flat_set&&, const Alloc& a);
104
+ template<class InputIterator, class Alloc>
105
+ constexpr flat_set(InputIterator first, InputIterator last, const Alloc& a);
106
+ template<class InputIterator, class Alloc>
107
+ constexpr flat_set(InputIterator first, InputIterator last,
108
+ const key_compare& comp, const Alloc& a);
109
+ template<class InputIterator, class Alloc>
110
+ constexpr flat_set(sorted_unique_t, InputIterator first, InputIterator last,
111
+ const Alloc& a);
112
+ template<class InputIterator, class Alloc>
113
+ constexpr flat_set(sorted_unique_t, InputIterator first, InputIterator last,
114
+ const key_compare& comp, const Alloc& a);
115
+ template<container-compatible-range<value_type> R, class Alloc>
116
+ constexpr flat_set(from_range_t, R&& rg, const Alloc& a);
117
+ template<container-compatible-range<value_type> R, class Alloc>
118
+ constexpr flat_set(from_range_t, R&& rg, const key_compare& comp, const Alloc& a);
119
+ template<class Alloc>
120
+ constexpr flat_set(initializer_list<value_type> il, const Alloc& a);
121
+ template<class Alloc>
122
+ constexpr flat_set(initializer_list<value_type> il, const key_compare& comp,
123
+ const Alloc& a);
124
+ template<class Alloc>
125
+ constexpr flat_set(sorted_unique_t, initializer_list<value_type> il, const Alloc& a);
126
+ template<class Alloc>
127
+ constexpr flat_set(sorted_unique_t, initializer_list<value_type> il,
128
+ const key_compare& comp, const Alloc& a);
129
+
130
+ constexpr flat_set& operator=(initializer_list<value_type>);
131
+
132
+ // iterators
133
+ constexpr iterator begin() noexcept;
134
+ constexpr const_iterator begin() const noexcept;
135
+ constexpr iterator end() noexcept;
136
+ constexpr const_iterator end() const noexcept;
137
+
138
+ constexpr reverse_iterator rbegin() noexcept;
139
+ constexpr const_reverse_iterator rbegin() const noexcept;
140
+ constexpr reverse_iterator rend() noexcept;
141
+ constexpr const_reverse_iterator rend() const noexcept;
142
+
143
+ constexpr const_iterator cbegin() const noexcept;
144
+ constexpr const_iterator cend() const noexcept;
145
+ constexpr const_reverse_iterator crbegin() const noexcept;
146
+ constexpr const_reverse_iterator crend() const noexcept;
147
+
148
+ // capacity
149
+ constexpr bool empty() const noexcept;
150
+ constexpr size_type size() const noexcept;
151
+ constexpr size_type max_size() const noexcept;
152
+
153
+ // [flat.set.modifiers], modifiers
154
+ template<class... Args> constexpr pair<iterator, bool> emplace(Args&&... args);
155
+ template<class... Args>
156
+ constexpr iterator emplace_hint(const_iterator position, Args&&... args);
157
+
158
+ constexpr pair<iterator, bool> insert(const value_type& x)
159
+ { return emplace(x); }
160
+ constexpr pair<iterator, bool> insert(value_type&& x)
161
+ { return emplace(std::move(x)); }
162
+ template<class K> constexpr pair<iterator, bool> insert(K&& x);
163
+ constexpr iterator insert(const_iterator position, const value_type& x)
164
+ { return emplace_hint(position, x); }
165
+ constexpr iterator insert(const_iterator position, value_type&& x)
166
+ { return emplace_hint(position, std::move(x)); }
167
+ template<class K> constexpr iterator insert(const_iterator hint, K&& x);
168
+
169
+ template<class InputIterator>
170
+ constexpr void insert(InputIterator first, InputIterator last);
171
+ template<class InputIterator>
172
+ constexpr void insert(sorted_unique_t, InputIterator first, InputIterator last);
173
+ template<container-compatible-range<value_type> R>
174
+ constexpr void insert_range(R&& rg);
175
+ template<container-compatible-range<value_type> R>
176
+ constexpr void insert_range(sorted_unique_t, R&& rg);
177
+
178
+ constexpr void insert(initializer_list<value_type> il)
179
+ { insert(il.begin(), il.end()); }
180
+ constexpr void insert(sorted_unique_t, initializer_list<value_type> il)
181
+ { insert(sorted_unique, il.begin(), il.end()); }
182
+
183
+ constexpr container_type extract() &&;
184
+ constexpr void replace(container_type&&);
185
+
186
+ constexpr iterator erase(iterator position) requires (!same_as<iterator, const_iterator>);
187
+ constexpr iterator erase(const_iterator position);
188
+ constexpr size_type erase(const key_type& x);
189
+ template<class K> constexpr size_type erase(K&& x);
190
+ constexpr iterator erase(const_iterator first, const_iterator last);
191
+
192
+ constexpr void swap(flat_set& y) noexcept(see below);
193
+ constexpr void clear() noexcept;
194
+
195
+ // observers
196
+ constexpr key_compare key_comp() const;
197
+ constexpr value_compare value_comp() const;
198
+
199
+ // set operations
200
+ constexpr iterator find(const key_type& x);
201
+ constexpr const_iterator find(const key_type& x) const;
202
+ template<class K> constexpr iterator find(const K& x);
203
+ template<class K> constexpr const_iterator find(const K& x) const;
204
+
205
+ constexpr size_type count(const key_type& x) const;
206
+ template<class K> constexpr size_type count(const K& x) const;
207
+
208
+ constexpr bool contains(const key_type& x) const;
209
+ template<class K> constexpr bool contains(const K& x) const;
210
+
211
+ constexpr iterator lower_bound(const key_type& x);
212
+ constexpr const_iterator lower_bound(const key_type& x) const;
213
+ template<class K> constexpr iterator lower_bound(const K& x);
214
+ template<class K> constexpr const_iterator lower_bound(const K& x) const;
215
+
216
+ constexpr iterator upper_bound(const key_type& x);
217
+ constexpr const_iterator upper_bound(const key_type& x) const;
218
+ template<class K> constexpr iterator upper_bound(const K& x);
219
+ template<class K> constexpr const_iterator upper_bound(const K& x) const;
220
+
221
+ constexpr pair<iterator, iterator> equal_range(const key_type& x);
222
+ constexpr pair<const_iterator, const_iterator> equal_range(const key_type& x) const;
223
+ template<class K>
224
+ constexpr pair<iterator, iterator> equal_range(const K& x);
225
+ template<class K>
226
+ constexpr pair<const_iterator, const_iterator> equal_range(const K& x) const;
227
+
228
+ friend constexpr bool operator==(const flat_set& x, const flat_set& y);
229
+
230
+ friend constexpr synth-three-way-result<value_type>
231
+ operator<=>(const flat_set& x, const flat_set& y);
232
+
233
+ friend constexpr void swap(flat_set& x, flat_set& y) noexcept(noexcept(x.swap(y)))
234
+ { x.swap(y); }
235
+
236
+ private:
237
+ container_type c; // exposition only
238
+ key_compare compare; // exposition only
239
+ };
240
+
241
+ template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
242
+ flat_set(KeyContainer, Compare = Compare())
243
+ -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;
244
+ template<class KeyContainer, class Allocator>
245
+ flat_set(KeyContainer, Allocator)
246
+ -> flat_set<typename KeyContainer::value_type,
247
+ less<typename KeyContainer::value_type>, KeyContainer>;
248
+ template<class KeyContainer, class Compare, class Allocator>
249
+ flat_set(KeyContainer, Compare, Allocator)
250
+ -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;
251
+
252
+ template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
253
+ flat_set(sorted_unique_t, KeyContainer, Compare = Compare())
254
+ -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;
255
+ template<class KeyContainer, class Allocator>
256
+ flat_set(sorted_unique_t, KeyContainer, Allocator)
257
+ -> flat_set<typename KeyContainer::value_type,
258
+ less<typename KeyContainer::value_type>, KeyContainer>;
259
+ template<class KeyContainer, class Compare, class Allocator>
260
+ flat_set(sorted_unique_t, KeyContainer, Compare, Allocator)
261
+ -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;
262
+
263
+ template<class InputIterator, class Compare = less<iter-value-type<InputIterator>>>
264
+ flat_set(InputIterator, InputIterator, Compare = Compare())
265
+ -> flat_set<iter-value-type<InputIterator>, Compare>;
266
+
267
+ template<class InputIterator, class Compare = less<iter-value-type<InputIterator>>>
268
+ flat_set(sorted_unique_t, InputIterator, InputIterator, Compare = Compare())
269
+ -> flat_set<iter-value-type<InputIterator>, Compare>;
270
+
271
+ template<ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,
272
+ class Allocator = allocator<ranges::range_value_t<R>>>
273
+ flat_set(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
274
+ -> flat_set<ranges::range_value_t<R>, Compare,
275
+ vector<ranges::range_value_t<R>,
276
+ alloc-rebind<Allocator, ranges::range_value_t<R>>>>;
277
+
278
+ template<ranges::input_range R, class Allocator>
279
+ flat_set(from_range_t, R&&, Allocator)
280
+ -> flat_set<ranges::range_value_t<R>, less<ranges::range_value_t<R>>,
281
+ vector<ranges::range_value_t<R>,
282
+ alloc-rebind<Allocator, ranges::range_value_t<R>>>>;
283
+
284
+ template<class Key, class Compare = less<Key>>
285
+ flat_set(initializer_list<Key>, Compare = Compare())
286
+ -> flat_set<Key, Compare>;
287
+
288
+ template<class Key, class Compare = less<Key>>
289
+ flat_set(sorted_unique_t, initializer_list<Key>, Compare = Compare())
290
+ -> flat_set<Key, Compare>;
26
291
 
27
292
  template<class Key, class Compare, class KeyContainer, class Allocator>
28
- struct uses_allocator<flat_set<Key, Compare, KeyContainer>, Allocator>;
293
+ struct uses_allocator<flat_set<Key, Compare, KeyContainer>, Allocator>
294
+ : bool_constant<uses_allocator_v<KeyContainer, Allocator>> { };
29
295
 
30
296
  // [flat.set.erasure], erasure for flat_set
31
297
  template<class Key, class Compare, class KeyContainer, class Predicate>
32
298
  typename flat_set<Key, Compare, KeyContainer>::size_type
33
299
  erase_if(flat_set<Key, Compare, KeyContainer>& c, Predicate pred);
34
300
 
301
+ struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; };
302
+ inline constexpr sorted_equivalent_t sorted_equivalent{};
303
+
35
304
  // [flat.multiset], class template flat_multiset
36
305
  template<class Key, class Compare = less<Key>, class KeyContainer = vector<Key>>
37
- class flat_multiset;
306
+ class flat_multiset {
307
+ public:
308
+ // types
309
+ using key_type = Key;
310
+ using value_type = Key;
311
+ using key_compare = Compare;
312
+ using value_compare = Compare;
313
+ using reference = value_type&;
314
+ using const_reference = const value_type&;
315
+ using size_type = KeyContainer::size_type;
316
+ using difference_type = KeyContainer::difference_type;
317
+ using iterator = implementation-defined; // see [container.requirements]
318
+ using const_iterator = implementation-defined; // see [container.requirements]
319
+ using reverse_iterator = std::reverse_iterator<iterator>;
320
+ using const_reverse_iterator = std::reverse_iterator<const_iterator>;
321
+ using container_type = KeyContainer;
38
322
 
39
- struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; };
40
- inline constexpr sorted_equivalent_t sorted_equivalent{};
323
+ // [flat.multiset.cons], constructors
324
+ constexpr flat_multiset() : flat_multiset(key_compare()) { }
325
+
326
+ constexpr flat_multiset(const flat_multiset&);
327
+ constexpr flat_multiset(flat_multiset&&);
328
+ constexpr flat_multiset& operator=(const flat_multiset&);
329
+ constexpr flat_multiset& operator=(flat_multiset&&);
330
+
331
+ constexpr explicit flat_multiset(const key_compare& comp)
332
+ : c(), compare(comp) { }
333
+
334
+ constexpr explicit flat_multiset(container_type cont,
335
+ const key_compare& comp = key_compare());
336
+
337
+ constexpr flat_multiset(sorted_equivalent_t, container_type cont,
338
+ const key_compare& comp = key_compare())
339
+ : c(std::move(cont)), compare(comp) { }
340
+
341
+ template<class InputIterator>
342
+ constexpr flat_multiset(InputIterator first, InputIterator last,
343
+ const key_compare& comp = key_compare())
344
+ : c(), compare(comp)
345
+ { insert(first, last); }
346
+
347
+ template<class InputIterator>
348
+ constexpr flat_multiset(sorted_equivalent_t, InputIterator first, InputIterator last,
349
+ const key_compare& comp = key_compare())
350
+ : c(first, last), compare(comp) { }
351
+
352
+ template<container-compatible-range<value_type> R>
353
+ constexpr flat_multiset(from_range_t, R&& rg)
354
+ : flat_multiset(from_range, std::forward<R>(rg), key_compare()) { }
355
+ template<container-compatible-range<value_type> R>
356
+ constexpr flat_multiset(from_range_t, R&& rg, const key_compare& comp)
357
+ : flat_multiset(comp)
358
+ { insert_range(std::forward<R>(rg)); }
359
+
360
+ constexpr flat_multiset(initializer_list<value_type> il,
361
+ const key_compare& comp = key_compare())
362
+ : flat_multiset(il.begin(), il.end(), comp) { }
363
+
364
+ constexpr flat_multiset(sorted_equivalent_t, initializer_list<value_type> il,
365
+ const key_compare& comp = key_compare())
366
+ : flat_multiset(sorted_equivalent, il.begin(), il.end(), comp) { }
367
+
368
+ // [flat.multiset.cons.alloc], constructors with allocators
369
+
370
+ template<class Alloc>
371
+ constexpr explicit flat_multiset(const Alloc& a);
372
+ template<class Alloc>
373
+ constexpr flat_multiset(const key_compare& comp, const Alloc& a);
374
+ template<class Alloc>
375
+ constexpr flat_multiset(const container_type& cont, const Alloc& a);
376
+ template<class Alloc>
377
+ constexpr flat_multiset(const container_type& cont, const key_compare& comp,
378
+ const Alloc& a);
379
+ template<class Alloc>
380
+ constexpr flat_multiset(sorted_equivalent_t, const container_type& cont, const Alloc& a);
381
+ template<class Alloc>
382
+ constexpr flat_multiset(sorted_equivalent_t, const container_type& cont,
383
+ const key_compare& comp, const Alloc& a);
384
+ template<class Alloc>
385
+ constexpr flat_multiset(const flat_multiset&, const Alloc& a);
386
+ template<class Alloc>
387
+ constexpr flat_multiset(flat_multiset&&, const Alloc& a);
388
+ template<class InputIterator, class Alloc>
389
+ constexpr flat_multiset(InputIterator first, InputIterator last, const Alloc& a);
390
+ template<class InputIterator, class Alloc>
391
+ constexpr flat_multiset(InputIterator first, InputIterator last,
392
+ const key_compare& comp, const Alloc& a);
393
+ template<class InputIterator, class Alloc>
394
+ constexpr flat_multiset(sorted_equivalent_t, InputIterator first, InputIterator last,
395
+ const Alloc& a);
396
+ template<class InputIterator, class Alloc>
397
+ constexpr flat_multiset(sorted_equivalent_t, InputIterator first, InputIterator last,
398
+ const key_compare& comp, const Alloc& a);
399
+ template<container-compatible-range<value_type> R, class Alloc>
400
+ constexpr flat_multiset(from_range_t, R&& rg, const Alloc& a);
401
+ template<container-compatible-range<value_type> R, class Alloc>
402
+ constexpr flat_multiset(from_range_t, R&& rg, const key_compare& comp, const Alloc& a);
403
+ template<class Alloc>
404
+ constexpr flat_multiset(initializer_list<value_type> il, const Alloc& a);
405
+ template<class Alloc>
406
+ constexpr flat_multiset(initializer_list<value_type> il, const key_compare& comp,
407
+ const Alloc& a);
408
+ template<class Alloc>
409
+ constexpr flat_multiset(sorted_equivalent_t, initializer_list<value_type> il,
410
+ const Alloc& a);
411
+ template<class Alloc>
412
+ constexpr flat_multiset(sorted_equivalent_t, initializer_list<value_type> il,
413
+ const key_compare& comp, const Alloc& a);
414
+
415
+ constexpr flat_multiset& operator=(initializer_list<value_type>);
416
+
417
+ // iterators
418
+ constexpr iterator begin() noexcept;
419
+ constexpr const_iterator begin() const noexcept;
420
+ constexpr iterator end() noexcept;
421
+ constexpr const_iterator end() const noexcept;
422
+
423
+ constexpr reverse_iterator rbegin() noexcept;
424
+ constexpr const_reverse_iterator rbegin() const noexcept;
425
+ constexpr reverse_iterator rend() noexcept;
426
+ constexpr const_reverse_iterator rend() const noexcept;
427
+
428
+ constexpr const_iterator cbegin() const noexcept;
429
+ constexpr const_iterator cend() const noexcept;
430
+ constexpr const_reverse_iterator crbegin() const noexcept;
431
+ constexpr const_reverse_iterator crend() const noexcept;
432
+
433
+ // capacity
434
+ constexpr bool empty() const noexcept;
435
+ constexpr size_type size() const noexcept;
436
+ constexpr size_type max_size() const noexcept;
437
+
438
+ // [flat.multiset.modifiers], modifiers
439
+ template<class... Args> constexpr iterator emplace(Args&&... args);
440
+ template<class... Args>
441
+ constexpr iterator emplace_hint(const_iterator position, Args&&... args);
442
+
443
+ constexpr iterator insert(const value_type& x)
444
+ { return emplace(x); }
445
+ constexpr iterator insert(value_type&& x)
446
+ { return emplace(std::move(x)); }
447
+ constexpr iterator insert(const_iterator position, const value_type& x)
448
+ { return emplace_hint(position, x); }
449
+ constexpr iterator insert(const_iterator position, value_type&& x)
450
+ { return emplace_hint(position, std::move(x)); }
451
+
452
+ template<class InputIterator>
453
+ constexpr void insert(InputIterator first, InputIterator last);
454
+ template<class InputIterator>
455
+ constexpr void insert(sorted_equivalent_t, InputIterator first, InputIterator last);
456
+ template<container-compatible-range<value_type> R>
457
+ constexpr void insert_range(R&& rg);
458
+ template<container-compatible-range<value_type> R>
459
+ constexpr void insert_range(sorted_equivalent_t, R&& rg);
460
+
461
+ constexpr void insert(initializer_list<value_type> il)
462
+ { insert(il.begin(), il.end()); }
463
+ constexpr void insert(sorted_equivalent_t, initializer_list<value_type> il)
464
+ { insert(sorted_equivalent, il.begin(), il.end()); }
465
+
466
+ constexpr container_type extract() &&;
467
+ constexpr void replace(container_type&&);
468
+
469
+ constexpr iterator erase(iterator position) requires (!same_as<iterator, const_iterator>);
470
+ constexpr iterator erase(const_iterator position);
471
+ constexpr size_type erase(const key_type& x);
472
+ template<class K> constexpr size_type erase(K&& x);
473
+ constexpr iterator erase(const_iterator first, const_iterator last);
474
+
475
+ constexpr void swap(flat_multiset& y) noexcept(see below);
476
+ constexpr void clear() noexcept;
477
+
478
+ // observers
479
+ constexpr key_compare key_comp() const;
480
+ constexpr value_compare value_comp() const;
481
+
482
+ // set operations
483
+ constexpr iterator find(const key_type& x);
484
+ constexpr const_iterator find(const key_type& x) const;
485
+ template<class K> constexpr iterator find(const K& x);
486
+ template<class K> constexpr const_iterator find(const K& x) const;
487
+
488
+ constexpr size_type count(const key_type& x) const;
489
+ template<class K> constexpr size_type count(const K& x) const;
490
+
491
+ constexpr bool contains(const key_type& x) const;
492
+ template<class K> constexpr bool contains(const K& x) const;
493
+
494
+ constexpr iterator lower_bound(const key_type& x);
495
+ constexpr const_iterator lower_bound(const key_type& x) const;
496
+ template<class K> constexpr iterator lower_bound(const K& x);
497
+ template<class K> constexpr const_iterator lower_bound(const K& x) const;
498
+
499
+ constexpr iterator upper_bound(const key_type& x);
500
+ constexpr const_iterator upper_bound(const key_type& x) const;
501
+ template<class K> constexpr iterator upper_bound(const K& x);
502
+ template<class K> constexpr const_iterator upper_bound(const K& x) const;
503
+
504
+ constexpr pair<iterator, iterator> equal_range(const key_type& x);
505
+ constexpr pair<const_iterator, const_iterator> equal_range(const key_type& x) const;
506
+ template<class K>
507
+ constexpr pair<iterator, iterator> equal_range(const K& x);
508
+ template<class K>
509
+ constexpr pair<const_iterator, const_iterator> equal_range(const K& x) const;
510
+
511
+ friend constexpr bool operator==(const flat_multiset& x, const flat_multiset& y);
512
+
513
+ friend constexpr synth-three-way-result<value_type>
514
+ operator<=>(const flat_multiset& x, const flat_multiset& y);
515
+
516
+ friend constexpr void swap(flat_multiset& x, flat_multiset& y)
517
+ noexcept(noexcept(x.swap(y)))
518
+ { x.swap(y); }
519
+
520
+ private:
521
+ container_type c; // exposition only
522
+ key_compare compare; // exposition only
523
+ };
524
+
525
+ template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
526
+ flat_multiset(KeyContainer, Compare = Compare())
527
+ -> flat_multiset<typename KeyContainer::value_type, Compare, KeyContainer>;
528
+ template<class KeyContainer, class Allocator>
529
+ flat_multiset(KeyContainer, Allocator)
530
+ -> flat_multiset<typename KeyContainer::value_type,
531
+ less<typename KeyContainer::value_type>, KeyContainer>;
532
+ template<class KeyContainer, class Compare, class Allocator>
533
+ flat_multiset(KeyContainer, Compare, Allocator)
534
+ -> flat_multiset<typename KeyContainer::value_type, Compare, KeyContainer>;
535
+
536
+ template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
537
+ flat_multiset(sorted_equivalent_t, KeyContainer, Compare = Compare())
538
+ -> flat_multiset<typename KeyContainer::value_type, Compare, KeyContainer>;
539
+ template<class KeyContainer, class Allocator>
540
+ flat_multiset(sorted_equivalent_t, KeyContainer, Allocator)
541
+ -> flat_multiset<typename KeyContainer::value_type,
542
+ less<typename KeyContainer::value_type>, KeyContainer>;
543
+ template<class KeyContainer, class Compare, class Allocator>
544
+ flat_multiset(sorted_equivalent_t, KeyContainer, Compare, Allocator)
545
+ -> flat_multiset<typename KeyContainer::value_type, Compare, KeyContainer>;
546
+
547
+ template<class InputIterator, class Compare = less<iter-value-type<InputIterator>>>
548
+ flat_multiset(InputIterator, InputIterator, Compare = Compare())
549
+ -> flat_multiset<iter-value-type<InputIterator>, Compare>;
550
+
551
+ template<class InputIterator, class Compare = less<iter-value-type<InputIterator>>>
552
+ flat_multiset(sorted_equivalent_t, InputIterator, InputIterator, Compare = Compare())
553
+ -> flat_multiset<iter-value-type<InputIterator>, Compare>;
554
+
555
+ template<ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,
556
+ class Allocator = allocator<ranges::range_value_t<R>>>
557
+ flat_multiset(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
558
+ -> flat_multiset<ranges::range_value_t<R>, Compare,
559
+ vector<ranges::range_value_t<R>,
560
+ alloc-rebind<Allocator, ranges::range_value_t<R>>>>;
561
+
562
+ template<ranges::input_range R, class Allocator>
563
+ flat_multiset(from_range_t, R&&, Allocator)
564
+ -> flat_multiset<ranges::range_value_t<R>, less<ranges::range_value_t<R>>,
565
+ vector<ranges::range_value_t<R>,
566
+ alloc-rebind<Allocator, ranges::range_value_t<R>>>>;
567
+
568
+ template<class Key, class Compare = less<Key>>
569
+ flat_multiset(initializer_list<Key>, Compare = Compare())
570
+ -> flat_multiset<Key, Compare>;
571
+
572
+ template<class Key, class Compare = less<Key>>
573
+ flat_multiset(sorted_equivalent_t, initializer_list<Key>, Compare = Compare())
574
+ -> flat_multiset<Key, Compare>;
41
575
 
42
576
  template<class Key, class Compare, class KeyContainer, class Allocator>
43
- struct uses_allocator<flat_multiset<Key, Compare, KeyContainer>, Allocator>;
577
+ struct uses_allocator<flat_multiset<Key, Compare, KeyContainer>, Allocator>
578
+ : bool_constant<uses_allocator_v<KeyContainer, Allocator>> { };
44
579
 
45
580
  // [flat.multiset.erasure], erasure for flat_multiset
46
581
  template<class Key, class Compare, class KeyContainer, class Predicate>
@@ -71,29 +71,29 @@ Macros:
71
71
  */
72
72
 
73
73
  #if defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
74
- # include <__cxx03/float.h>
74
+ # include <__cxx03/__config>
75
75
  #else
76
76
  # include <__config>
77
+ #endif
77
78
 
78
- # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
79
- # pragma GCC system_header
80
- # endif
79
+ #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
80
+ # pragma GCC system_header
81
+ #endif
81
82
 
82
- # if __has_include_next(<float.h>)
83
- # include_next <float.h>
84
- # endif
83
+ #if __has_include_next(<float.h>)
84
+ # include_next <float.h>
85
+ #endif
85
86
 
86
- # ifdef __cplusplus
87
+ #ifdef __cplusplus
87
88
 
88
- # ifndef FLT_EVAL_METHOD
89
- # define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
90
- # endif
89
+ # ifndef FLT_EVAL_METHOD
90
+ # define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
91
+ # endif
91
92
 
92
- # ifndef DECIMAL_DIG
93
- # define DECIMAL_DIG __DECIMAL_DIG__
94
- # endif
93
+ # ifndef DECIMAL_DIG
94
+ # define DECIMAL_DIG __DECIMAL_DIG__
95
+ # endif
95
96
 
96
- # endif // __cplusplus
97
- #endif // defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
97
+ #endif // __cplusplus
98
98
 
99
99
  #endif // _LIBCPP_FLOAT_H