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

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 (673) 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/src/any.cpp +4 -0
  480. package/libcxx/src/atomic.cpp +365 -80
  481. package/libcxx/src/barrier.cpp +4 -3
  482. package/libcxx/src/charconv.cpp +6 -3
  483. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  484. package/libcxx/src/error_category.cpp +3 -1
  485. package/libcxx/src/exception.cpp +2 -10
  486. package/libcxx/src/experimental/time_zone.cpp +1 -1
  487. package/libcxx/src/experimental/tzdb.cpp +4 -1
  488. package/libcxx/src/filesystem/error.h +4 -22
  489. package/libcxx/src/filesystem/format_string.h +9 -18
  490. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  491. package/libcxx/src/filesystem/operations.cpp +2 -9
  492. package/libcxx/src/filesystem/path.cpp +3 -1
  493. package/libcxx/src/include/aligned_alloc.h +65 -0
  494. package/libcxx/src/include/config_elast.h +1 -1
  495. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  496. package/libcxx/src/include/overridable_function.h +8 -10
  497. package/libcxx/src/iostream.cpp +56 -37
  498. package/libcxx/src/locale.cpp +213 -196
  499. package/libcxx/src/memory.cpp +12 -14
  500. package/libcxx/src/mutex_destructor.cpp +1 -1
  501. package/libcxx/src/new.cpp +5 -5
  502. package/libcxx/src/optional.cpp +4 -0
  503. package/libcxx/src/print.cpp +9 -1
  504. package/libcxx/src/random.cpp +0 -26
  505. package/libcxx/src/string.cpp +10 -25
  506. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  507. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  508. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  509. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  510. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  511. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  512. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  513. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  514. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  515. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  516. package/libcxx/src/system_error.cpp +2 -0
  517. package/libcxx/src/thread.cpp +1 -3
  518. package/libcxx/src/valarray.cpp +1 -2
  519. package/libcxx/src/vector.cpp +2 -2
  520. package/libcxxabi/include/__cxxabi_config.h +42 -23
  521. package/libcxxabi/src/cxa_exception.cpp +4 -2
  522. package/libcxxabi/src/cxa_exception.h +16 -14
  523. package/libcxxabi/src/cxa_personality.cpp +126 -9
  524. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  525. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  526. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  527. package/libcxxabi/src/demangle/Utility.h +21 -7
  528. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  529. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  530. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  531. package/libtsan/LICENSE.TXT +311 -0
  532. package/libtsan/builtins/assembly.h +41 -8
  533. package/libtsan/interception/interception_win.cpp +4 -0
  534. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  535. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  536. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  537. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  538. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  539. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  540. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  541. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  542. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  543. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  544. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  545. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  546. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  547. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  548. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  549. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  550. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  551. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  552. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  553. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  554. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  555. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  556. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  557. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  558. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  559. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  560. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  561. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  562. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  563. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  564. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  565. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  566. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  567. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  568. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  569. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  570. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  571. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  572. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  573. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  574. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  575. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  576. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  577. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  578. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  579. package/libtsan/tsan_debugging.cpp +2 -2
  580. package/libtsan/tsan_flags.cpp +37 -0
  581. package/libtsan/tsan_flags.h +8 -0
  582. package/libtsan/tsan_flags.inc +12 -0
  583. package/libtsan/tsan_interceptors.h +9 -1
  584. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  585. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  586. package/libtsan/tsan_interface.h +3 -3
  587. package/libtsan/tsan_interface_ann.cpp +23 -9
  588. package/libtsan/tsan_mman.cpp +18 -4
  589. package/libtsan/tsan_platform.h +44 -7
  590. package/libtsan/tsan_platform_linux.cpp +42 -14
  591. package/libtsan/tsan_platform_mac.cpp +16 -3
  592. package/libtsan/tsan_report.h +14 -1
  593. package/libtsan/tsan_rtl.cpp +14 -0
  594. package/libtsan/tsan_rtl.h +7 -2
  595. package/libtsan/tsan_rtl_aarch64.S +3 -5
  596. package/libtsan/tsan_rtl_access.cpp +8 -3
  597. package/libtsan/tsan_rtl_amd64.S +2 -0
  598. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  599. package/libtsan/tsan_rtl_report.cpp +132 -65
  600. package/libtsan/tsan_rtl_thread.cpp +31 -9
  601. package/libtsan/tsan_symbolize.cpp +1 -1
  602. package/libtsan/tsan_symbolize.h +1 -1
  603. package/libtsan/tsan_trace.h +1 -1
  604. package/libunwind/include/__libunwind_config.h +11 -2
  605. package/libunwind/include/libunwind.h +117 -11
  606. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  607. package/libunwind/src/AddressSpace.hpp +40 -19
  608. package/libunwind/src/CompactUnwinder.hpp +16 -5
  609. package/libunwind/src/DwarfInstructions.hpp +24 -13
  610. package/libunwind/src/DwarfParser.hpp +60 -22
  611. package/libunwind/src/EHHeaderParser.hpp +7 -4
  612. package/libunwind/src/Registers.hpp +226 -22
  613. package/libunwind/src/Unwind-seh.cpp +6 -7
  614. package/libunwind/src/Unwind-wasm.c +7 -7
  615. package/libunwind/src/UnwindCursor.hpp +167 -49
  616. package/libunwind/src/UnwindLevel1.c +46 -17
  617. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  618. package/libunwind/src/UnwindRegistersSave.S +86 -2
  619. package/libunwind/src/assembly.h +5 -1
  620. package/libunwind/src/config.h +9 -0
  621. package/libunwind/src/gcc_personality_v0.c +79 -6
  622. package/libunwind/src/libunwind.cpp +104 -4
  623. package/libunwind/src/libunwind_ext.h +7 -1
  624. package/libunwind/src/shadow_stack_unwind.h +2 -2
  625. package/lldb/pretty_printers.py +948 -0
  626. package/package.json +1 -1
  627. package/std/Build/Step/Compile.zig +18 -19
  628. package/std/Build/Step/Run.zig +13 -6
  629. package/std/Build/Step.zig +0 -3
  630. package/std/Io/Threaded.zig +3 -0
  631. package/std/Target/aarch64.zig +620 -77
  632. package/std/Target/amdgcn.zig +421 -21
  633. package/std/Target/arm.zig +40 -6
  634. package/std/Target/bpf.zig +6 -0
  635. package/std/Target/hexagon.zig +41 -6
  636. package/std/Target/loongarch.zig +18 -0
  637. package/std/Target/mips.zig +6 -0
  638. package/std/Target/nvptx.zig +58 -35
  639. package/std/Target/powerpc.zig +27 -19
  640. package/std/Target/riscv.zig +415 -177
  641. package/std/Target/sparc.zig +17 -0
  642. package/std/Target/wasm.zig +7 -0
  643. package/std/Target/x86.zig +200 -31
  644. package/std/Target/xtensa.zig +65 -0
  645. package/std/Target.zig +11 -2
  646. package/std/c.zig +7 -0
  647. package/std/debug/Dwarf.zig +14 -11
  648. package/std/debug/Pdb.zig +24 -16
  649. package/std/hash/xxhash.zig +0 -6
  650. package/std/math/log10.zig +0 -2
  651. package/std/math/modf.zig +0 -1
  652. package/std/mem.zig +1 -2
  653. package/std/os/linux/x86.zig +2 -2
  654. package/std/os/windows.zig +130 -1
  655. package/std/simd.zig +4 -21
  656. package/std/start.zig +4 -3
  657. package/std/zig/Ast.zig +5 -7
  658. package/std/zig/AstGen.zig +20 -14
  659. package/std/zig/ErrorBundle.zig +6 -2
  660. package/std/zig/ZonGen.zig +13 -21
  661. package/std/zig/llvm/Builder.zig +2 -2
  662. package/std/zig/system/arm.zig +56 -2
  663. package/std/zig/system/windows.zig +34 -1
  664. package/std/zig/system/x86.zig +60 -16
  665. package/std/zig/system.zig +0 -10
  666. package/include/amxbf16transposeintrin.h +0 -94
  667. package/include/amxcomplextransposeintrin.h +0 -303
  668. package/include/amxfp16transposeintrin.h +0 -94
  669. package/include/amxmovrstransposeintrin.h +0 -200
  670. package/include/amxtf32transposeintrin.h +0 -105
  671. package/include/amxtransposeintrin.h +0 -248
  672. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  673. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -22,7 +22,6 @@
22
22
  #include <__algorithm/upper_bound.h>
23
23
  #include <__assert>
24
24
  #include <__compare/synth_three_way.h>
25
- #include <__concepts/convertible_to.h>
26
25
  #include <__concepts/swappable.h>
27
26
  #include <__config>
28
27
  #include <__cstddef/byte.h>
@@ -30,7 +29,6 @@
30
29
  #include <__flat_map/key_value_iterator.h>
31
30
  #include <__flat_map/sorted_equivalent.h>
32
31
  #include <__flat_map/utils.h>
33
- #include <__functional/invoke.h>
34
32
  #include <__functional/is_transparent.h>
35
33
  #include <__functional/operations.h>
36
34
  #include <__fwd/vector.h>
@@ -47,7 +45,7 @@
47
45
  #include <__ranges/container_compatible_range.h>
48
46
  #include <__ranges/drop_view.h>
49
47
  #include <__ranges/from_range.h>
50
- #include <__ranges/ref_view.h>
48
+ #include <__ranges/range_adaptor.h>
51
49
  #include <__ranges/size.h>
52
50
  #include <__ranges/subrange.h>
53
51
  #include <__ranges/zip_view.h>
@@ -57,14 +55,12 @@
57
55
  #include <__type_traits/is_allocator.h>
58
56
  #include <__type_traits/is_nothrow_constructible.h>
59
57
  #include <__type_traits/is_same.h>
60
- #include <__type_traits/maybe_const.h>
61
58
  #include <__utility/exception_guard.h>
62
59
  #include <__utility/move.h>
63
60
  #include <__utility/pair.h>
64
61
  #include <__utility/scope_guard.h>
65
62
  #include <__vector/vector.h>
66
63
  #include <initializer_list>
67
- #include <stdexcept>
68
64
 
69
65
  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
70
66
  # pragma GCC system_header
@@ -114,11 +110,12 @@ public:
114
110
  class value_compare {
115
111
  private:
116
112
  _LIBCPP_NO_UNIQUE_ADDRESS key_compare __comp_;
117
- _LIBCPP_HIDE_FROM_ABI value_compare(key_compare __c) : __comp_(__c) {}
113
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 value_compare(key_compare __c) : __comp_(__c) {}
118
114
  friend flat_multimap;
119
115
 
120
116
  public:
121
- _LIBCPP_HIDE_FROM_ABI bool operator()(const_reference __x, const_reference __y) const {
117
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool
118
+ operator()(const_reference __x, const_reference __y) const {
122
119
  return __comp_(__x.first, __y.first);
123
120
  }
124
121
  };
@@ -137,17 +134,17 @@ private:
137
134
 
138
135
  public:
139
136
  // [flat.map.cons], construct/copy/destroy
140
- _LIBCPP_HIDE_FROM_ABI flat_multimap() noexcept(
137
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap() noexcept(
141
138
  is_nothrow_default_constructible_v<_KeyContainer> && is_nothrow_default_constructible_v<_MappedContainer> &&
142
139
  is_nothrow_default_constructible_v<_Compare>)
143
140
  : __containers_(), __compare_() {}
144
141
 
145
- _LIBCPP_HIDE_FROM_ABI flat_multimap(const flat_multimap&) = default;
142
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(const flat_multimap&) = default;
146
143
 
147
144
  // The copy/move constructors are not specified in the spec, which means they should be defaulted.
148
145
  // However, the move constructor can potentially leave a moved-from object in an inconsistent
149
146
  // state if an exception is thrown.
150
- _LIBCPP_HIDE_FROM_ABI flat_multimap(flat_multimap&& __other) noexcept(
147
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(flat_multimap&& __other) noexcept(
151
148
  is_nothrow_move_constructible_v<_KeyContainer> && is_nothrow_move_constructible_v<_MappedContainer> &&
152
149
  is_nothrow_move_constructible_v<_Compare>)
153
150
  # if _LIBCPP_HAS_EXCEPTIONS
@@ -168,7 +165,8 @@ public:
168
165
 
169
166
  template <class _Allocator>
170
167
  requires __allocator_ctor_constraint<_Allocator>
171
- _LIBCPP_HIDE_FROM_ABI flat_multimap(const flat_multimap& __other, const _Allocator& __alloc)
168
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
169
+ flat_multimap(const flat_multimap& __other, const _Allocator& __alloc)
172
170
  : flat_multimap(__ctor_uses_allocator_tag{},
173
171
  __alloc,
174
172
  __other.__containers_.keys,
@@ -177,7 +175,7 @@ public:
177
175
 
178
176
  template <class _Allocator>
179
177
  requires __allocator_ctor_constraint<_Allocator>
180
- _LIBCPP_HIDE_FROM_ABI flat_multimap(flat_multimap&& __other, const _Allocator& __alloc)
178
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(flat_multimap&& __other, const _Allocator& __alloc)
181
179
  # if _LIBCPP_HAS_EXCEPTIONS
182
180
  try
183
181
  # endif // _LIBCPP_HAS_EXCEPTIONS
@@ -194,7 +192,7 @@ public:
194
192
  # endif // _LIBCPP_HAS_EXCEPTIONS
195
193
  }
196
194
 
197
- _LIBCPP_HIDE_FROM_ABI flat_multimap(
195
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
198
196
  key_container_type __key_cont, mapped_container_type __mapped_cont, const key_compare& __comp = key_compare())
199
197
  : __containers_{.keys = std::move(__key_cont), .values = std::move(__mapped_cont)}, __compare_(__comp) {
200
198
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
@@ -204,7 +202,7 @@ public:
204
202
 
205
203
  template <class _Allocator>
206
204
  requires __allocator_ctor_constraint<_Allocator>
207
- _LIBCPP_HIDE_FROM_ABI flat_multimap(
205
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
208
206
  const key_container_type& __key_cont, const mapped_container_type& __mapped_cont, const _Allocator& __alloc)
209
207
  : flat_multimap(__ctor_uses_allocator_tag{}, __alloc, __key_cont, __mapped_cont) {
210
208
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
@@ -214,22 +212,22 @@ public:
214
212
 
215
213
  template <class _Allocator>
216
214
  requires __allocator_ctor_constraint<_Allocator>
217
- _LIBCPP_HIDE_FROM_ABI
218
- flat_multimap(const key_container_type& __key_cont,
219
- const mapped_container_type& __mapped_cont,
220
- const key_compare& __comp,
221
- const _Allocator& __alloc)
215
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
216
+ const key_container_type& __key_cont,
217
+ const mapped_container_type& __mapped_cont,
218
+ const key_compare& __comp,
219
+ const _Allocator& __alloc)
222
220
  : flat_multimap(__ctor_uses_allocator_tag{}, __alloc, __key_cont, __mapped_cont, __comp) {
223
221
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
224
222
  "flat_multimap keys and mapped containers have different size");
225
223
  __sort();
226
224
  }
227
225
 
228
- _LIBCPP_HIDE_FROM_ABI
229
- flat_multimap(sorted_equivalent_t,
230
- key_container_type __key_cont,
231
- mapped_container_type __mapped_cont,
232
- const key_compare& __comp = key_compare())
226
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
227
+ sorted_equivalent_t,
228
+ key_container_type __key_cont,
229
+ mapped_container_type __mapped_cont,
230
+ const key_compare& __comp = key_compare())
233
231
  : __containers_{.keys = std::move(__key_cont), .values = std::move(__mapped_cont)}, __compare_(__comp) {
234
232
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
235
233
  "flat_multimap keys and mapped containers have different size");
@@ -238,11 +236,11 @@ public:
238
236
 
239
237
  template <class _Allocator>
240
238
  requires __allocator_ctor_constraint<_Allocator>
241
- _LIBCPP_HIDE_FROM_ABI
242
- flat_multimap(sorted_equivalent_t,
243
- const key_container_type& __key_cont,
244
- const mapped_container_type& __mapped_cont,
245
- const _Allocator& __alloc)
239
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
240
+ sorted_equivalent_t,
241
+ const key_container_type& __key_cont,
242
+ const mapped_container_type& __mapped_cont,
243
+ const _Allocator& __alloc)
246
244
  : flat_multimap(__ctor_uses_allocator_tag{}, __alloc, __key_cont, __mapped_cont) {
247
245
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
248
246
  "flat_multimap keys and mapped containers have different size");
@@ -251,33 +249,35 @@ public:
251
249
 
252
250
  template <class _Allocator>
253
251
  requires __allocator_ctor_constraint<_Allocator>
254
- _LIBCPP_HIDE_FROM_ABI
255
- flat_multimap(sorted_equivalent_t,
256
- const key_container_type& __key_cont,
257
- const mapped_container_type& __mapped_cont,
258
- const key_compare& __comp,
259
- const _Allocator& __alloc)
252
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
253
+ sorted_equivalent_t,
254
+ const key_container_type& __key_cont,
255
+ const mapped_container_type& __mapped_cont,
256
+ const key_compare& __comp,
257
+ const _Allocator& __alloc)
260
258
  : flat_multimap(__ctor_uses_allocator_tag{}, __alloc, __key_cont, __mapped_cont, __comp) {
261
259
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(__containers_.keys.size() == __containers_.values.size(),
262
260
  "flat_multimap keys and mapped containers have different size");
263
261
  _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(__is_sorted(__containers_.keys), "Key container is not sorted");
264
262
  }
265
263
 
266
- _LIBCPP_HIDE_FROM_ABI explicit flat_multimap(const key_compare& __comp) : __containers_(), __compare_(__comp) {}
264
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 explicit flat_multimap(const key_compare& __comp)
265
+ : __containers_(), __compare_(__comp) {}
267
266
 
268
267
  template <class _Allocator>
269
268
  requires __allocator_ctor_constraint<_Allocator>
270
- _LIBCPP_HIDE_FROM_ABI flat_multimap(const key_compare& __comp, const _Allocator& __alloc)
269
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
270
+ flat_multimap(const key_compare& __comp, const _Allocator& __alloc)
271
271
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc, __comp) {}
272
272
 
273
273
  template <class _Allocator>
274
274
  requires __allocator_ctor_constraint<_Allocator>
275
- _LIBCPP_HIDE_FROM_ABI explicit flat_multimap(const _Allocator& __alloc)
275
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 explicit flat_multimap(const _Allocator& __alloc)
276
276
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc) {}
277
277
 
278
278
  template <class _InputIterator>
279
279
  requires __has_input_iterator_category<_InputIterator>::value
280
- _LIBCPP_HIDE_FROM_ABI
280
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
281
281
  flat_multimap(_InputIterator __first, _InputIterator __last, const key_compare& __comp = key_compare())
282
282
  : __containers_(), __compare_(__comp) {
283
283
  insert(__first, __last);
@@ -285,7 +285,7 @@ public:
285
285
 
286
286
  template <class _InputIterator, class _Allocator>
287
287
  requires(__has_input_iterator_category<_InputIterator>::value && __allocator_ctor_constraint<_Allocator>)
288
- _LIBCPP_HIDE_FROM_ABI
288
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
289
289
  flat_multimap(_InputIterator __first, _InputIterator __last, const key_compare& __comp, const _Allocator& __alloc)
290
290
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc, __comp) {
291
291
  insert(__first, __last);
@@ -293,91 +293,99 @@ public:
293
293
 
294
294
  template <class _InputIterator, class _Allocator>
295
295
  requires(__has_input_iterator_category<_InputIterator>::value && __allocator_ctor_constraint<_Allocator>)
296
- _LIBCPP_HIDE_FROM_ABI flat_multimap(_InputIterator __first, _InputIterator __last, const _Allocator& __alloc)
296
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
297
+ flat_multimap(_InputIterator __first, _InputIterator __last, const _Allocator& __alloc)
297
298
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc) {
298
299
  insert(__first, __last);
299
300
  }
300
301
 
301
302
  template <_ContainerCompatibleRange<value_type> _Range>
302
- _LIBCPP_HIDE_FROM_ABI flat_multimap(from_range_t __fr, _Range&& __rg)
303
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(from_range_t __fr, _Range&& __rg)
303
304
  : flat_multimap(__fr, std::forward<_Range>(__rg), key_compare()) {}
304
305
 
305
306
  template <_ContainerCompatibleRange<value_type> _Range, class _Allocator>
306
307
  requires __allocator_ctor_constraint<_Allocator>
307
- _LIBCPP_HIDE_FROM_ABI flat_multimap(from_range_t, _Range&& __rg, const _Allocator& __alloc)
308
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
309
+ flat_multimap(from_range_t, _Range&& __rg, const _Allocator& __alloc)
308
310
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc) {
309
311
  insert_range(std::forward<_Range>(__rg));
310
312
  }
311
313
 
312
314
  template <_ContainerCompatibleRange<value_type> _Range>
313
- _LIBCPP_HIDE_FROM_ABI flat_multimap(from_range_t, _Range&& __rg, const key_compare& __comp) : flat_multimap(__comp) {
315
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
316
+ flat_multimap(from_range_t, _Range&& __rg, const key_compare& __comp)
317
+ : flat_multimap(__comp) {
314
318
  insert_range(std::forward<_Range>(__rg));
315
319
  }
316
320
 
317
321
  template <_ContainerCompatibleRange<value_type> _Range, class _Allocator>
318
322
  requires __allocator_ctor_constraint<_Allocator>
319
- _LIBCPP_HIDE_FROM_ABI flat_multimap(from_range_t, _Range&& __rg, const key_compare& __comp, const _Allocator& __alloc)
323
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
324
+ flat_multimap(from_range_t, _Range&& __rg, const key_compare& __comp, const _Allocator& __alloc)
320
325
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc, __comp) {
321
326
  insert_range(std::forward<_Range>(__rg));
322
327
  }
323
328
 
324
329
  template <class _InputIterator>
325
330
  requires __has_input_iterator_category<_InputIterator>::value
326
- _LIBCPP_HIDE_FROM_ABI flat_multimap(
331
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
327
332
  sorted_equivalent_t, _InputIterator __first, _InputIterator __last, const key_compare& __comp = key_compare())
328
333
  : __containers_(), __compare_(__comp) {
329
334
  insert(sorted_equivalent, __first, __last);
330
335
  }
331
336
  template <class _InputIterator, class _Allocator>
332
337
  requires(__has_input_iterator_category<_InputIterator>::value && __allocator_ctor_constraint<_Allocator>)
333
- _LIBCPP_HIDE_FROM_ABI
334
- flat_multimap(sorted_equivalent_t,
335
- _InputIterator __first,
336
- _InputIterator __last,
337
- const key_compare& __comp,
338
- const _Allocator& __alloc)
338
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
339
+ sorted_equivalent_t,
340
+ _InputIterator __first,
341
+ _InputIterator __last,
342
+ const key_compare& __comp,
343
+ const _Allocator& __alloc)
339
344
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc, __comp) {
340
345
  insert(sorted_equivalent, __first, __last);
341
346
  }
342
347
 
343
348
  template <class _InputIterator, class _Allocator>
344
349
  requires(__has_input_iterator_category<_InputIterator>::value && __allocator_ctor_constraint<_Allocator>)
345
- _LIBCPP_HIDE_FROM_ABI
350
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
346
351
  flat_multimap(sorted_equivalent_t, _InputIterator __first, _InputIterator __last, const _Allocator& __alloc)
347
352
  : flat_multimap(__ctor_uses_allocator_empty_tag{}, __alloc) {
348
353
  insert(sorted_equivalent, __first, __last);
349
354
  }
350
355
 
351
- _LIBCPP_HIDE_FROM_ABI flat_multimap(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
356
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
357
+ flat_multimap(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
352
358
  : flat_multimap(__il.begin(), __il.end(), __comp) {}
353
359
 
354
360
  template <class _Allocator>
355
361
  requires __allocator_ctor_constraint<_Allocator>
356
- _LIBCPP_HIDE_FROM_ABI
362
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
357
363
  flat_multimap(initializer_list<value_type> __il, const key_compare& __comp, const _Allocator& __alloc)
358
364
  : flat_multimap(__il.begin(), __il.end(), __comp, __alloc) {}
359
365
 
360
366
  template <class _Allocator>
361
367
  requires __allocator_ctor_constraint<_Allocator>
362
- _LIBCPP_HIDE_FROM_ABI flat_multimap(initializer_list<value_type> __il, const _Allocator& __alloc)
368
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
369
+ flat_multimap(initializer_list<value_type> __il, const _Allocator& __alloc)
363
370
  : flat_multimap(__il.begin(), __il.end(), __alloc) {}
364
371
 
365
- _LIBCPP_HIDE_FROM_ABI
372
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
366
373
  flat_multimap(sorted_equivalent_t, initializer_list<value_type> __il, const key_compare& __comp = key_compare())
367
374
  : flat_multimap(sorted_equivalent, __il.begin(), __il.end(), __comp) {}
368
375
 
369
376
  template <class _Allocator>
370
377
  requires __allocator_ctor_constraint<_Allocator>
371
- _LIBCPP_HIDE_FROM_ABI flat_multimap(
378
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
372
379
  sorted_equivalent_t, initializer_list<value_type> __il, const key_compare& __comp, const _Allocator& __alloc)
373
380
  : flat_multimap(sorted_equivalent, __il.begin(), __il.end(), __comp, __alloc) {}
374
381
 
375
382
  template <class _Allocator>
376
383
  requires __allocator_ctor_constraint<_Allocator>
377
- _LIBCPP_HIDE_FROM_ABI flat_multimap(sorted_equivalent_t, initializer_list<value_type> __il, const _Allocator& __alloc)
384
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
385
+ flat_multimap(sorted_equivalent_t, initializer_list<value_type> __il, const _Allocator& __alloc)
378
386
  : flat_multimap(sorted_equivalent, __il.begin(), __il.end(), __alloc) {}
379
387
 
380
- _LIBCPP_HIDE_FROM_ABI flat_multimap& operator=(initializer_list<value_type> __il) {
388
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap& operator=(initializer_list<value_type> __il) {
381
389
  clear();
382
390
  insert(__il);
383
391
  return *this;
@@ -386,9 +394,9 @@ public:
386
394
  // copy/move assignment are not specified in the spec (defaulted)
387
395
  // but move assignment can potentially leave moved from object in an inconsistent
388
396
  // state if an exception is thrown
389
- _LIBCPP_HIDE_FROM_ABI flat_multimap& operator=(const flat_multimap&) = default;
397
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap& operator=(const flat_multimap&) = default;
390
398
 
391
- _LIBCPP_HIDE_FROM_ABI flat_multimap& operator=(flat_multimap&& __other) noexcept(
399
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap& operator=(flat_multimap&& __other) noexcept(
392
400
  is_nothrow_move_assignable_v<_KeyContainer> && is_nothrow_move_assignable_v<_MappedContainer> &&
393
401
  is_nothrow_move_assignable_v<_Compare>) {
394
402
  auto __clear_other_guard = std::__make_scope_guard([&]() noexcept { __other.clear() /* noexcept */; });
@@ -400,38 +408,58 @@ public:
400
408
  }
401
409
 
402
410
  // iterators
403
- _LIBCPP_HIDE_FROM_ABI iterator begin() noexcept {
411
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator begin() noexcept {
404
412
  return iterator(__containers_.keys.begin(), __containers_.values.begin());
405
413
  }
406
414
 
407
- _LIBCPP_HIDE_FROM_ABI const_iterator begin() const noexcept {
415
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator begin() const noexcept {
408
416
  return const_iterator(__containers_.keys.begin(), __containers_.values.begin());
409
417
  }
410
418
 
411
- _LIBCPP_HIDE_FROM_ABI iterator end() noexcept {
419
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator end() noexcept {
412
420
  return iterator(__containers_.keys.end(), __containers_.values.end());
413
421
  }
414
422
 
415
- _LIBCPP_HIDE_FROM_ABI const_iterator end() const noexcept {
423
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator end() const noexcept {
416
424
  return const_iterator(__containers_.keys.end(), __containers_.values.end());
417
425
  }
418
426
 
419
- _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
420
- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
421
- _LIBCPP_HIDE_FROM_ABI reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
422
- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
427
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 reverse_iterator rbegin() noexcept {
428
+ return reverse_iterator(end());
429
+ }
430
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_reverse_iterator rbegin() const noexcept {
431
+ return const_reverse_iterator(end());
432
+ }
433
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 reverse_iterator rend() noexcept {
434
+ return reverse_iterator(begin());
435
+ }
436
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_reverse_iterator rend() const noexcept {
437
+ return const_reverse_iterator(begin());
438
+ }
423
439
 
424
- _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const noexcept { return begin(); }
425
- _LIBCPP_HIDE_FROM_ABI const_iterator cend() const noexcept { return end(); }
426
- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
427
- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
440
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator cbegin() const noexcept {
441
+ return begin();
442
+ }
443
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator cend() const noexcept {
444
+ return end();
445
+ }
446
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_reverse_iterator crbegin() const noexcept {
447
+ return const_reverse_iterator(end());
448
+ }
449
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_reverse_iterator crend() const noexcept {
450
+ return const_reverse_iterator(begin());
451
+ }
428
452
 
429
453
  // [flat.map.capacity], capacity
430
- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __containers_.keys.empty(); }
454
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool empty() const noexcept {
455
+ return __containers_.keys.empty();
456
+ }
431
457
 
432
- _LIBCPP_HIDE_FROM_ABI size_type size() const noexcept { return __containers_.keys.size(); }
458
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type size() const noexcept {
459
+ return __containers_.keys.size();
460
+ }
433
461
 
434
- _LIBCPP_HIDE_FROM_ABI size_type max_size() const noexcept {
462
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type max_size() const noexcept {
435
463
  return std::min<size_type>(__containers_.keys.max_size(), __containers_.values.max_size());
436
464
  }
437
465
 
@@ -439,7 +467,7 @@ public:
439
467
  template <class... _Args>
440
468
  requires is_constructible_v<pair<key_type, mapped_type>, _Args...> && is_move_constructible_v<key_type> &&
441
469
  is_move_constructible_v<mapped_type>
442
- _LIBCPP_HIDE_FROM_ABI iterator emplace(_Args&&... __args) {
470
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator emplace(_Args&&... __args) {
443
471
  std::pair<key_type, mapped_type> __pair(std::forward<_Args>(__args)...);
444
472
  auto __key_it = std::upper_bound(__containers_.keys.begin(), __containers_.keys.end(), __pair.first, __compare_);
445
473
  auto __mapped_it = __corresponding_mapped_it(*this, __key_it);
@@ -450,7 +478,7 @@ public:
450
478
 
451
479
  template <class... _Args>
452
480
  requires is_constructible_v<pair<key_type, mapped_type>, _Args...>
453
- _LIBCPP_HIDE_FROM_ABI iterator emplace_hint(const_iterator __hint, _Args&&... __args) {
481
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator emplace_hint(const_iterator __hint, _Args&&... __args) {
454
482
  std::pair<key_type, mapped_type> __pair(std::forward<_Args>(__args)...);
455
483
 
456
484
  auto __prev_larger = __hint != cbegin() && __compare_(__pair.first, (__hint - 1)->first);
@@ -490,33 +518,35 @@ public:
490
518
  *this, __key_iter, __mapped_iter, std::move(__pair.first), std::move(__pair.second));
491
519
  }
492
520
 
493
- _LIBCPP_HIDE_FROM_ABI iterator insert(const value_type& __x) { return emplace(__x); }
521
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(const value_type& __x) { return emplace(__x); }
494
522
 
495
- _LIBCPP_HIDE_FROM_ABI iterator insert(value_type&& __x) { return emplace(std::move(__x)); }
523
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(value_type&& __x) {
524
+ return emplace(std::move(__x));
525
+ }
496
526
 
497
- _LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, const value_type& __x) {
527
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(const_iterator __hint, const value_type& __x) {
498
528
  return emplace_hint(__hint, __x);
499
529
  }
500
530
 
501
- _LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, value_type&& __x) {
531
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(const_iterator __hint, value_type&& __x) {
502
532
  return emplace_hint(__hint, std::move(__x));
503
533
  }
504
534
 
505
535
  template <class _PairLike>
506
536
  requires is_constructible_v<pair<key_type, mapped_type>, _PairLike>
507
- _LIBCPP_HIDE_FROM_ABI iterator insert(_PairLike&& __x) {
537
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(_PairLike&& __x) {
508
538
  return emplace(std::forward<_PairLike>(__x));
509
539
  }
510
540
 
511
541
  template <class _PairLike>
512
542
  requires is_constructible_v<pair<key_type, mapped_type>, _PairLike>
513
- _LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, _PairLike&& __x) {
543
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator insert(const_iterator __hint, _PairLike&& __x) {
514
544
  return emplace_hint(__hint, std::forward<_PairLike>(__x));
515
545
  }
516
546
 
517
547
  template <class _InputIterator>
518
548
  requires __has_input_iterator_category<_InputIterator>::value
519
- _LIBCPP_HIDE_FROM_ABI void insert(_InputIterator __first, _InputIterator __last) {
549
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void insert(_InputIterator __first, _InputIterator __last) {
520
550
  if constexpr (sized_sentinel_for<_InputIterator, _InputIterator>) {
521
551
  __reserve(__last - __first);
522
552
  }
@@ -525,7 +555,8 @@ public:
525
555
 
526
556
  template <class _InputIterator>
527
557
  requires __has_input_iterator_category<_InputIterator>::value
528
- _LIBCPP_HIDE_FROM_ABI void insert(sorted_equivalent_t, _InputIterator __first, _InputIterator __last) {
558
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
559
+ insert(sorted_equivalent_t, _InputIterator __first, _InputIterator __last) {
529
560
  if constexpr (sized_sentinel_for<_InputIterator, _InputIterator>) {
530
561
  __reserve(__last - __first);
531
562
  }
@@ -534,7 +565,7 @@ public:
534
565
  }
535
566
 
536
567
  template <_ContainerCompatibleRange<value_type> _Range>
537
- _LIBCPP_HIDE_FROM_ABI void insert_range(_Range&& __range) {
568
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void insert_range(_Range&& __range) {
538
569
  if constexpr (ranges::sized_range<_Range>) {
539
570
  __reserve(ranges::size(__range));
540
571
  }
@@ -542,19 +573,32 @@ public:
542
573
  __append_sort_merge</*WasSorted = */ false>(ranges::begin(__range), ranges::end(__range));
543
574
  }
544
575
 
545
- _LIBCPP_HIDE_FROM_ABI void insert(initializer_list<value_type> __il) { insert(__il.begin(), __il.end()); }
576
+ template <_ContainerCompatibleRange<value_type> _Range>
577
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void insert_range(sorted_equivalent_t, _Range&& __range) {
578
+ if constexpr (ranges::sized_range<_Range>) {
579
+ __reserve(ranges::size(__range));
580
+ }
581
+
582
+ __append_sort_merge</*WasSorted = */ true>(ranges::begin(__range), ranges::end(__range));
583
+ }
584
+
585
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void insert(initializer_list<value_type> __il) {
586
+ insert(__il.begin(), __il.end());
587
+ }
546
588
 
547
- _LIBCPP_HIDE_FROM_ABI void insert(sorted_equivalent_t, initializer_list<value_type> __il) {
589
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
590
+ insert(sorted_equivalent_t, initializer_list<value_type> __il) {
548
591
  insert(sorted_equivalent, __il.begin(), __il.end());
549
592
  }
550
593
 
551
- _LIBCPP_HIDE_FROM_ABI containers extract() && {
594
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 containers extract() && {
552
595
  auto __guard = std::__make_scope_guard([&]() noexcept { clear() /* noexcept */; });
553
596
  auto __ret = std::move(__containers_);
554
597
  return __ret;
555
598
  }
556
599
 
557
- _LIBCPP_HIDE_FROM_ABI void replace(key_container_type&& __key_cont, mapped_container_type&& __mapped_cont) {
600
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
601
+ replace(key_container_type&& __key_cont, mapped_container_type&& __mapped_cont) {
558
602
  _LIBCPP_ASSERT_VALID_INPUT_RANGE(
559
603
  __key_cont.size() == __mapped_cont.size(), "flat_multimap keys and mapped containers have different size");
560
604
 
@@ -565,15 +609,15 @@ public:
565
609
  __guard.__complete();
566
610
  }
567
611
 
568
- _LIBCPP_HIDE_FROM_ABI iterator erase(iterator __position) {
612
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator erase(iterator __position) {
569
613
  return __erase(__position.__key_iter_, __position.__mapped_iter_);
570
614
  }
571
615
 
572
- _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __position) {
616
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator erase(const_iterator __position) {
573
617
  return __erase(__position.__key_iter_, __position.__mapped_iter_);
574
618
  }
575
619
 
576
- _LIBCPP_HIDE_FROM_ABI size_type erase(const key_type& __x) {
620
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type erase(const key_type& __x) {
577
621
  auto [__first, __last] = equal_range(__x);
578
622
  auto __res = __last - __first;
579
623
  erase(__first, __last);
@@ -583,14 +627,14 @@ public:
583
627
  template <class _Kp>
584
628
  requires(__is_compare_transparent && !is_convertible_v<_Kp &&, iterator> &&
585
629
  !is_convertible_v<_Kp &&, const_iterator>)
586
- _LIBCPP_HIDE_FROM_ABI size_type erase(_Kp&& __x) {
630
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type erase(_Kp&& __x) {
587
631
  auto [__first, __last] = equal_range(__x);
588
632
  auto __res = __last - __first;
589
633
  erase(__first, __last);
590
634
  return __res;
591
635
  }
592
636
 
593
- _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last) {
637
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator erase(const_iterator __first, const_iterator __last) {
594
638
  auto __on_failure = std::__make_exception_guard([&]() noexcept { clear() /* noexcept */; });
595
639
  auto __key_it = __containers_.keys.erase(__first.__key_iter_, __last.__key_iter_);
596
640
  auto __mapped_it = __containers_.values.erase(__first.__mapped_iter_, __last.__mapped_iter_);
@@ -598,146 +642,178 @@ public:
598
642
  return iterator(std::move(__key_it), std::move(__mapped_it));
599
643
  }
600
644
 
601
- _LIBCPP_HIDE_FROM_ABI void swap(flat_multimap& __y) noexcept {
602
- // warning: The spec has unconditional noexcept, which means that
603
- // if any of the following functions throw an exception,
604
- // std::terminate will be called
645
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void swap(flat_multimap& __y) noexcept(
646
+ is_nothrow_swappable_v<key_container_type> && is_nothrow_swappable_v<mapped_container_type> &&
647
+ is_nothrow_swappable_v<key_compare>) {
648
+ auto __on_failure = std::__make_exception_guard([&]() noexcept {
649
+ clear() /* noexcept */;
650
+ __y.clear() /* noexcept */;
651
+ });
605
652
  ranges::swap(__compare_, __y.__compare_);
606
653
  ranges::swap(__containers_.keys, __y.__containers_.keys);
607
654
  ranges::swap(__containers_.values, __y.__containers_.values);
655
+ __on_failure.__complete();
608
656
  }
609
657
 
610
- _LIBCPP_HIDE_FROM_ABI void clear() noexcept {
658
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void clear() noexcept {
611
659
  __containers_.keys.clear();
612
660
  __containers_.values.clear();
613
661
  }
614
662
 
615
663
  // observers
616
- _LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __compare_; }
617
- _LIBCPP_HIDE_FROM_ABI value_compare value_comp() const { return value_compare(__compare_); }
664
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 key_compare key_comp() const { return __compare_; }
665
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 value_compare value_comp() const {
666
+ return value_compare(__compare_);
667
+ }
618
668
 
619
- _LIBCPP_HIDE_FROM_ABI const key_container_type& keys() const noexcept { return __containers_.keys; }
620
- _LIBCPP_HIDE_FROM_ABI const mapped_container_type& values() const noexcept { return __containers_.values; }
669
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const key_container_type& keys() const noexcept {
670
+ return __containers_.keys;
671
+ }
672
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const mapped_container_type&
673
+ values() const noexcept {
674
+ return __containers_.values;
675
+ }
621
676
 
622
677
  // map operations
623
- _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __x) { return __find_impl(*this, __x); }
678
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator find(const key_type& __x) {
679
+ return __find_impl(*this, __x);
680
+ }
624
681
 
625
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __x) const { return __find_impl(*this, __x); }
682
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator find(const key_type& __x) const {
683
+ return __find_impl(*this, __x);
684
+ }
626
685
 
627
686
  template <class _Kp>
628
687
  requires __is_compare_transparent
629
- _LIBCPP_HIDE_FROM_ABI iterator find(const _Kp& __x) {
688
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator find(const _Kp& __x) {
630
689
  return __find_impl(*this, __x);
631
690
  }
632
691
 
633
692
  template <class _Kp>
634
693
  requires __is_compare_transparent
635
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const _Kp& __x) const {
694
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator find(const _Kp& __x) const {
636
695
  return __find_impl(*this, __x);
637
696
  }
638
697
 
639
- _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __x) const {
698
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type count(const key_type& __x) const {
640
699
  auto [__first, __last] = equal_range(__x);
641
700
  return __last - __first;
642
701
  }
643
702
 
644
703
  template <class _Kp>
645
704
  requires __is_compare_transparent
646
- _LIBCPP_HIDE_FROM_ABI size_type count(const _Kp& __x) const {
705
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 size_type count(const _Kp& __x) const {
647
706
  auto [__first, __last] = equal_range(__x);
648
707
  return __last - __first;
649
708
  }
650
709
 
651
- _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __x) const { return find(__x) != end(); }
710
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool contains(const key_type& __x) const {
711
+ return find(__x) != end();
712
+ }
652
713
 
653
714
  template <class _Kp>
654
715
  requires __is_compare_transparent
655
- _LIBCPP_HIDE_FROM_ABI bool contains(const _Kp& __x) const {
716
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool contains(const _Kp& __x) const {
656
717
  return find(__x) != end();
657
718
  }
658
719
 
659
- _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __x) { return __lower_bound<iterator>(*this, __x); }
720
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator lower_bound(const key_type& __x) {
721
+ return __lower_bound<iterator>(*this, __x);
722
+ }
660
723
 
661
- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __x) const {
724
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator
725
+ lower_bound(const key_type& __x) const {
662
726
  return __lower_bound<const_iterator>(*this, __x);
663
727
  }
664
728
 
665
729
  template <class _Kp>
666
730
  requires __is_compare_transparent
667
- _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _Kp& __x) {
731
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator lower_bound(const _Kp& __x) {
668
732
  return __lower_bound<iterator>(*this, __x);
669
733
  }
670
734
 
671
735
  template <class _Kp>
672
736
  requires __is_compare_transparent
673
- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _Kp& __x) const {
737
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator lower_bound(const _Kp& __x) const {
674
738
  return __lower_bound<const_iterator>(*this, __x);
675
739
  }
676
740
 
677
- _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __x) { return __upper_bound<iterator>(*this, __x); }
741
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator upper_bound(const key_type& __x) {
742
+ return __upper_bound<iterator>(*this, __x);
743
+ }
678
744
 
679
- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __x) const {
745
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator
746
+ upper_bound(const key_type& __x) const {
680
747
  return __upper_bound<const_iterator>(*this, __x);
681
748
  }
682
749
 
683
750
  template <class _Kp>
684
751
  requires __is_compare_transparent
685
- _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _Kp& __x) {
752
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator upper_bound(const _Kp& __x) {
686
753
  return __upper_bound<iterator>(*this, __x);
687
754
  }
688
755
 
689
756
  template <class _Kp>
690
757
  requires __is_compare_transparent
691
- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _Kp& __x) const {
758
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 const_iterator upper_bound(const _Kp& __x) const {
692
759
  return __upper_bound<const_iterator>(*this, __x);
693
760
  }
694
761
 
695
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __x) {
762
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 pair<iterator, iterator>
763
+ equal_range(const key_type& __x) {
696
764
  return __equal_range_impl(*this, __x);
697
765
  }
698
766
 
699
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __x) const {
767
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 pair<const_iterator, const_iterator>
768
+ equal_range(const key_type& __x) const {
700
769
  return __equal_range_impl(*this, __x);
701
770
  }
702
771
 
703
772
  template <class _Kp>
704
773
  requires __is_compare_transparent
705
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _Kp& __x) {
774
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 pair<iterator, iterator>
775
+ equal_range(const _Kp& __x) {
706
776
  return __equal_range_impl(*this, __x);
707
777
  }
708
778
  template <class _Kp>
709
779
  requires __is_compare_transparent
710
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _Kp& __x) const {
780
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 pair<const_iterator, const_iterator>
781
+ equal_range(const _Kp& __x) const {
711
782
  return __equal_range_impl(*this, __x);
712
783
  }
713
784
 
714
- friend _LIBCPP_HIDE_FROM_ABI bool operator==(const flat_multimap& __x, const flat_multimap& __y) {
785
+ friend _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool
786
+ operator==(const flat_multimap& __x, const flat_multimap& __y) {
715
787
  return ranges::equal(__x, __y);
716
788
  }
717
789
 
718
- friend _LIBCPP_HIDE_FROM_ABI auto operator<=>(const flat_multimap& __x, const flat_multimap& __y) {
790
+ friend _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 auto
791
+ operator<=>(const flat_multimap& __x, const flat_multimap& __y) {
719
792
  return std::lexicographical_compare_three_way(
720
793
  __x.begin(), __x.end(), __y.begin(), __y.end(), std::__synth_three_way);
721
794
  }
722
795
 
723
- friend _LIBCPP_HIDE_FROM_ABI void swap(flat_multimap& __x, flat_multimap& __y) noexcept { __x.swap(__y); }
796
+ friend _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
797
+ swap(flat_multimap& __x, flat_multimap& __y) noexcept(noexcept(__x.swap(__y))) {
798
+ __x.swap(__y);
799
+ }
724
800
 
725
801
  private:
726
802
  struct __ctor_uses_allocator_tag {
727
- explicit _LIBCPP_HIDE_FROM_ABI __ctor_uses_allocator_tag() = default;
803
+ explicit _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 __ctor_uses_allocator_tag() = default;
728
804
  };
729
805
  struct __ctor_uses_allocator_empty_tag {
730
- explicit _LIBCPP_HIDE_FROM_ABI __ctor_uses_allocator_empty_tag() = default;
806
+ explicit _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 __ctor_uses_allocator_empty_tag() = default;
731
807
  };
732
808
 
733
809
  template <class _Allocator, class _KeyCont, class _MappedCont, class... _CompArg>
734
810
  requires __allocator_ctor_constraint<_Allocator>
735
- _LIBCPP_HIDE_FROM_ABI
736
- flat_multimap(__ctor_uses_allocator_tag,
737
- const _Allocator& __alloc,
738
- _KeyCont&& __key_cont,
739
- _MappedCont&& __mapped_cont,
740
- _CompArg&&... __comp)
811
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 flat_multimap(
812
+ __ctor_uses_allocator_tag,
813
+ const _Allocator& __alloc,
814
+ _KeyCont&& __key_cont,
815
+ _MappedCont&& __mapped_cont,
816
+ _CompArg&&... __comp)
741
817
  : __containers_{.keys = std::make_obj_using_allocator<key_container_type>(
742
818
  __alloc, std::forward<_KeyCont>(__key_cont)),
743
819
  .values = std::make_obj_using_allocator<mapped_container_type>(
@@ -746,36 +822,39 @@ private:
746
822
 
747
823
  template <class _Allocator, class... _CompArg>
748
824
  requires __allocator_ctor_constraint<_Allocator>
749
- _LIBCPP_HIDE_FROM_ABI flat_multimap(__ctor_uses_allocator_empty_tag, const _Allocator& __alloc, _CompArg&&... __comp)
825
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
826
+ flat_multimap(__ctor_uses_allocator_empty_tag, const _Allocator& __alloc, _CompArg&&... __comp)
750
827
  : __containers_{.keys = std::make_obj_using_allocator<key_container_type>(__alloc),
751
828
  .values = std::make_obj_using_allocator<mapped_container_type>(__alloc)},
752
829
  __compare_(std::forward<_CompArg>(__comp)...) {}
753
830
 
754
- _LIBCPP_HIDE_FROM_ABI bool __is_sorted(auto&& __key_container) const {
831
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool __is_sorted(auto&& __key_container) const {
755
832
  return ranges::is_sorted(__key_container, __compare_);
756
833
  }
757
834
 
758
- _LIBCPP_HIDE_FROM_ABI void __sort() {
835
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void __sort() {
759
836
  auto __zv = ranges::views::zip(__containers_.keys, __containers_.values);
760
837
  ranges::sort(__zv, __compare_, [](const auto& __p) -> decltype(auto) { return std::get<0>(__p); });
761
838
  }
762
839
 
763
840
  template <class _Self, class _KeyIter>
764
- _LIBCPP_HIDE_FROM_ABI static auto __corresponding_mapped_it(_Self&& __self, _KeyIter&& __key_iter) {
841
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 static auto
842
+ __corresponding_mapped_it(_Self&& __self, _KeyIter&& __key_iter) {
765
843
  return __self.__containers_.values.begin() +
766
844
  static_cast<ranges::range_difference_t<mapped_container_type>>(
767
845
  ranges::distance(__self.__containers_.keys.begin(), __key_iter));
768
846
  }
769
847
 
770
848
  template <bool _WasSorted, class _InputIterator, class _Sentinel>
771
- _LIBCPP_HIDE_FROM_ABI void __append_sort_merge(_InputIterator __first, _Sentinel __last) {
849
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
850
+ __append_sort_merge(_InputIterator __first, _Sentinel __last) {
772
851
  auto __on_failure = std::__make_exception_guard([&]() noexcept { clear() /* noexcept */; });
773
852
  size_t __num_appended = __flat_map_utils::__append(*this, std::move(__first), std::move(__last));
774
853
  if (__num_appended != 0) {
775
854
  auto __zv = ranges::views::zip(__containers_.keys, __containers_.values);
776
855
  auto __append_start_offset = __containers_.keys.size() - __num_appended;
777
856
  auto __end = __zv.end();
778
- auto __compare_key = [this](const auto& __p1, const auto& __p2) {
857
+ auto __compare_key = [this](const auto& __p1, const auto& __p2) -> bool {
779
858
  return __compare_(std::get<0>(__p1), std::get<0>(__p2));
780
859
  };
781
860
  if constexpr (!_WasSorted) {
@@ -791,7 +870,7 @@ private:
791
870
  }
792
871
 
793
872
  template <class _Self, class _Kp>
794
- _LIBCPP_HIDE_FROM_ABI static auto __find_impl(_Self&& __self, const _Kp& __key) {
873
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 static auto __find_impl(_Self&& __self, const _Kp& __key) {
795
874
  auto __it = __self.lower_bound(__key);
796
875
  auto __last = __self.end();
797
876
  if (__it == __last || __self.__compare_(__key, __it->first)) {
@@ -801,7 +880,7 @@ private:
801
880
  }
802
881
 
803
882
  template <class _Self, class _Kp>
804
- _LIBCPP_HIDE_FROM_ABI static auto __equal_range_impl(_Self&& __self, const _Kp& __key) {
883
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 static auto __equal_range_impl(_Self&& __self, const _Kp& __key) {
805
884
  auto [__key_first, __key_last] =
806
885
  std::equal_range(__self.__containers_.keys.begin(), __self.__containers_.keys.end(), __key, __self.__compare_);
807
886
 
@@ -811,7 +890,7 @@ private:
811
890
  }
812
891
 
813
892
  template <class _Res, class _Self, class _Kp>
814
- _LIBCPP_HIDE_FROM_ABI static _Res __lower_bound(_Self&& __self, _Kp& __x) {
893
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 static _Res __lower_bound(_Self&& __self, _Kp& __x) {
815
894
  auto __key_iter =
816
895
  std::lower_bound(__self.__containers_.keys.begin(), __self.__containers_.keys.end(), __x, __self.__compare_);
817
896
  auto __mapped_iter = __corresponding_mapped_it(__self, __key_iter);
@@ -819,14 +898,14 @@ private:
819
898
  }
820
899
 
821
900
  template <class _Res, class _Self, class _Kp>
822
- _LIBCPP_HIDE_FROM_ABI static _Res __upper_bound(_Self&& __self, _Kp& __x) {
901
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 static _Res __upper_bound(_Self&& __self, _Kp& __x) {
823
902
  auto __key_iter =
824
903
  std::upper_bound(__self.__containers_.keys.begin(), __self.__containers_.keys.end(), __x, __self.__compare_);
825
904
  auto __mapped_iter = __corresponding_mapped_it(__self, __key_iter);
826
905
  return _Res(std::move(__key_iter), std::move(__mapped_iter));
827
906
  }
828
907
 
829
- _LIBCPP_HIDE_FROM_ABI void __reserve(size_t __size) {
908
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void __reserve(size_t __size) {
830
909
  if constexpr (__container_traits<_KeyContainer>::__reservable) {
831
910
  __containers_.keys.reserve(__size);
832
911
  }
@@ -837,7 +916,8 @@ private:
837
916
  }
838
917
 
839
918
  template <class _KIter, class _MIter>
840
- _LIBCPP_HIDE_FROM_ABI iterator __erase(_KIter __key_iter_to_remove, _MIter __mapped_iter_to_remove) {
919
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator
920
+ __erase(_KIter __key_iter_to_remove, _MIter __mapped_iter_to_remove) {
841
921
  auto __on_failure = std::__make_exception_guard([&]() noexcept { clear() /* noexcept */; });
842
922
  auto __key_iter = __containers_.keys.erase(__key_iter_to_remove);
843
923
  auto __mapped_iter = __containers_.values.erase(__mapped_iter_to_remove);
@@ -847,7 +927,8 @@ private:
847
927
 
848
928
  template <class _Key2, class _Tp2, class _Compare2, class _KeyContainer2, class _MappedContainer2, class _Predicate>
849
929
  friend typename flat_multimap<_Key2, _Tp2, _Compare2, _KeyContainer2, _MappedContainer2>::size_type
850
- erase_if(flat_multimap<_Key2, _Tp2, _Compare2, _KeyContainer2, _MappedContainer2>&, _Predicate);
930
+ _LIBCPP_CONSTEXPR_SINCE_CXX26
931
+ erase_if(flat_multimap<_Key2, _Tp2, _Compare2, _KeyContainer2, _MappedContainer2>&, _Predicate);
851
932
 
852
933
  friend __flat_map_utils;
853
934
 
@@ -855,8 +936,9 @@ private:
855
936
  _LIBCPP_NO_UNIQUE_ADDRESS key_compare __compare_;
856
937
 
857
938
  struct __key_equiv {
858
- _LIBCPP_HIDE_FROM_ABI __key_equiv(key_compare __c) : __comp_(__c) {}
859
- _LIBCPP_HIDE_FROM_ABI bool operator()(const_reference __x, const_reference __y) const {
939
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 __key_equiv(key_compare __c) : __comp_(__c) {}
940
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 bool
941
+ operator()(const_reference __x, const_reference __y) const {
860
942
  return !__comp_(std::get<0>(__x), std::get<0>(__y)) && !__comp_(std::get<0>(__y), std::get<0>(__x));
861
943
  }
862
944
  key_compare __comp_;
@@ -864,8 +946,7 @@ private:
864
946
  };
865
947
 
866
948
  template <class _KeyContainer, class _MappedContainer, class _Compare = less<typename _KeyContainer::value_type>>
867
- requires(!__is_allocator<_Compare>::value && !__is_allocator<_KeyContainer>::value &&
868
- !__is_allocator<_MappedContainer>::value &&
949
+ requires(!__is_allocator_v<_Compare> && !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer> &&
869
950
  is_invocable_v<const _Compare&,
870
951
  const typename _KeyContainer::value_type&,
871
952
  const typename _KeyContainer::value_type&>)
@@ -878,7 +959,7 @@ flat_multimap(_KeyContainer, _MappedContainer, _Compare = _Compare())
878
959
 
879
960
  template <class _KeyContainer, class _MappedContainer, class _Allocator>
880
961
  requires(uses_allocator_v<_KeyContainer, _Allocator> && uses_allocator_v<_MappedContainer, _Allocator> &&
881
- !__is_allocator<_KeyContainer>::value && !__is_allocator<_MappedContainer>::value)
962
+ !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer>)
882
963
  flat_multimap(_KeyContainer, _MappedContainer, _Allocator)
883
964
  -> flat_multimap<typename _KeyContainer::value_type,
884
965
  typename _MappedContainer::value_type,
@@ -887,9 +968,8 @@ flat_multimap(_KeyContainer, _MappedContainer, _Allocator)
887
968
  _MappedContainer>;
888
969
 
889
970
  template <class _KeyContainer, class _MappedContainer, class _Compare, class _Allocator>
890
- requires(!__is_allocator<_Compare>::value && !__is_allocator<_KeyContainer>::value &&
891
- !__is_allocator<_MappedContainer>::value && uses_allocator_v<_KeyContainer, _Allocator> &&
892
- uses_allocator_v<_MappedContainer, _Allocator> &&
971
+ requires(!__is_allocator_v<_Compare> && !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer> &&
972
+ uses_allocator_v<_KeyContainer, _Allocator> && uses_allocator_v<_MappedContainer, _Allocator> &&
893
973
  is_invocable_v<const _Compare&,
894
974
  const typename _KeyContainer::value_type&,
895
975
  const typename _KeyContainer::value_type&>)
@@ -901,8 +981,7 @@ flat_multimap(_KeyContainer, _MappedContainer, _Compare, _Allocator)
901
981
  _MappedContainer>;
902
982
 
903
983
  template <class _KeyContainer, class _MappedContainer, class _Compare = less<typename _KeyContainer::value_type>>
904
- requires(!__is_allocator<_Compare>::value && !__is_allocator<_KeyContainer>::value &&
905
- !__is_allocator<_MappedContainer>::value &&
984
+ requires(!__is_allocator_v<_Compare> && !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer> &&
906
985
  is_invocable_v<const _Compare&,
907
986
  const typename _KeyContainer::value_type&,
908
987
  const typename _KeyContainer::value_type&>)
@@ -915,7 +994,7 @@ flat_multimap(sorted_equivalent_t, _KeyContainer, _MappedContainer, _Compare = _
915
994
 
916
995
  template <class _KeyContainer, class _MappedContainer, class _Allocator>
917
996
  requires(uses_allocator_v<_KeyContainer, _Allocator> && uses_allocator_v<_MappedContainer, _Allocator> &&
918
- !__is_allocator<_KeyContainer>::value && !__is_allocator<_MappedContainer>::value)
997
+ !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer>)
919
998
  flat_multimap(sorted_equivalent_t, _KeyContainer, _MappedContainer, _Allocator)
920
999
  -> flat_multimap<typename _KeyContainer::value_type,
921
1000
  typename _MappedContainer::value_type,
@@ -924,9 +1003,8 @@ flat_multimap(sorted_equivalent_t, _KeyContainer, _MappedContainer, _Allocator)
924
1003
  _MappedContainer>;
925
1004
 
926
1005
  template <class _KeyContainer, class _MappedContainer, class _Compare, class _Allocator>
927
- requires(!__is_allocator<_Compare>::value && !__is_allocator<_KeyContainer>::value &&
928
- !__is_allocator<_MappedContainer>::value && uses_allocator_v<_KeyContainer, _Allocator> &&
929
- uses_allocator_v<_MappedContainer, _Allocator> &&
1006
+ requires(!__is_allocator_v<_Compare> && !__is_allocator_v<_KeyContainer> && !__is_allocator_v<_MappedContainer> &&
1007
+ uses_allocator_v<_KeyContainer, _Allocator> && uses_allocator_v<_MappedContainer, _Allocator> &&
930
1008
  is_invocable_v<const _Compare&,
931
1009
  const typename _KeyContainer::value_type&,
932
1010
  const typename _KeyContainer::value_type&>)
@@ -938,19 +1016,19 @@ flat_multimap(sorted_equivalent_t, _KeyContainer, _MappedContainer, _Compare, _A
938
1016
  _MappedContainer>;
939
1017
 
940
1018
  template <class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>>
941
- requires(__has_input_iterator_category<_InputIterator>::value && !__is_allocator<_Compare>::value)
1019
+ requires(__has_input_iterator_category<_InputIterator>::value && !__is_allocator_v<_Compare>)
942
1020
  flat_multimap(_InputIterator, _InputIterator, _Compare = _Compare())
943
1021
  -> flat_multimap<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare>;
944
1022
 
945
1023
  template <class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>>
946
- requires(__has_input_iterator_category<_InputIterator>::value && !__is_allocator<_Compare>::value)
1024
+ requires(__has_input_iterator_category<_InputIterator>::value && !__is_allocator_v<_Compare>)
947
1025
  flat_multimap(sorted_equivalent_t, _InputIterator, _InputIterator, _Compare = _Compare())
948
1026
  -> flat_multimap<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare>;
949
1027
 
950
1028
  template <ranges::input_range _Range,
951
1029
  class _Compare = less<__range_key_type<_Range>>,
952
1030
  class _Allocator = allocator<byte>,
953
- class = __enable_if_t<!__is_allocator<_Compare>::value && __is_allocator<_Allocator>::value>>
1031
+ class = __enable_if_t<!__is_allocator_v<_Compare> && __is_allocator_v<_Allocator>>>
954
1032
  flat_multimap(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator()) -> flat_multimap<
955
1033
  __range_key_type<_Range>,
956
1034
  __range_mapped_type<_Range>,
@@ -958,7 +1036,7 @@ flat_multimap(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Alloc
958
1036
  vector<__range_key_type<_Range>, __allocator_traits_rebind_t<_Allocator, __range_key_type<_Range>>>,
959
1037
  vector<__range_mapped_type<_Range>, __allocator_traits_rebind_t<_Allocator, __range_mapped_type<_Range>>>>;
960
1038
 
961
- template <ranges::input_range _Range, class _Allocator, class = __enable_if_t<__is_allocator<_Allocator>::value>>
1039
+ template <ranges::input_range _Range, class _Allocator, class = __enable_if_t<__is_allocator_v<_Allocator>>>
962
1040
  flat_multimap(from_range_t, _Range&&, _Allocator) -> flat_multimap<
963
1041
  __range_key_type<_Range>,
964
1042
  __range_mapped_type<_Range>,
@@ -967,11 +1045,11 @@ flat_multimap(from_range_t, _Range&&, _Allocator) -> flat_multimap<
967
1045
  vector<__range_mapped_type<_Range>, __allocator_traits_rebind_t<_Allocator, __range_mapped_type<_Range>>>>;
968
1046
 
969
1047
  template <class _Key, class _Tp, class _Compare = less<_Key>>
970
- requires(!__is_allocator<_Compare>::value)
1048
+ requires(!__is_allocator_v<_Compare>)
971
1049
  flat_multimap(initializer_list<pair<_Key, _Tp>>, _Compare = _Compare()) -> flat_multimap<_Key, _Tp, _Compare>;
972
1050
 
973
1051
  template <class _Key, class _Tp, class _Compare = less<_Key>>
974
- requires(!__is_allocator<_Compare>::value)
1052
+ requires(!__is_allocator_v<_Compare>)
975
1053
  flat_multimap(sorted_equivalent_t, initializer_list<pair<_Key, _Tp>>, _Compare = _Compare())
976
1054
  -> flat_multimap<_Key, _Tp, _Compare>;
977
1055
 
@@ -980,8 +1058,9 @@ struct uses_allocator<flat_multimap<_Key, _Tp, _Compare, _KeyContainer, _MappedC
980
1058
  : bool_constant<uses_allocator_v<_KeyContainer, _Allocator> && uses_allocator_v<_MappedContainer, _Allocator>> {};
981
1059
 
982
1060
  template <class _Key, class _Tp, class _Compare, class _KeyContainer, class _MappedContainer, class _Predicate>
983
- _LIBCPP_HIDE_FROM_ABI typename flat_multimap<_Key, _Tp, _Compare, _KeyContainer, _MappedContainer>::size_type
984
- erase_if(flat_multimap<_Key, _Tp, _Compare, _KeyContainer, _MappedContainer>& __flat_multimap, _Predicate __pred) {
1061
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26
1062
+ typename flat_multimap<_Key, _Tp, _Compare, _KeyContainer, _MappedContainer>::size_type
1063
+ erase_if(flat_multimap<_Key, _Tp, _Compare, _KeyContainer, _MappedContainer>& __flat_multimap, _Predicate __pred) {
985
1064
  auto __zv = ranges::views::zip(__flat_multimap.__containers_.keys, __flat_multimap.__containers_.values);
986
1065
  auto __first = __zv.begin();
987
1066
  auto __last = __zv.end();