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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. package/c/stdlib.zig +32 -22
  2. package/compiler/aro/aro/Compilation.zig +0 -3
  3. package/compiler/translate-c/ast.zig +5 -2
  4. package/compiler_rt/arm.zig +3 -3
  5. package/compiler_rt/trunctfhf2.zig +3 -0
  6. package/compiler_rt.zig +1 -22
  7. package/docs/wasm/markdown/Parser.zig +5 -9
  8. package/include/__clang_spirv_builtins.h +12 -12
  9. package/include/__float_float.h +176 -0
  10. package/include/__float_header_macro.h +12 -0
  11. package/include/__float_infinity_nan.h +20 -0
  12. package/include/amo.h +131 -0
  13. package/include/amxavx512intrin.h +215 -1
  14. package/include/amxintrin.h +0 -2
  15. package/include/arm_acle.h +37 -27
  16. package/include/arm_neon.h +218 -82
  17. package/include/arm_sme.h +8 -8
  18. package/include/arm_sve.h +4162 -3782
  19. package/include/avx10_2_512bf16intrin.h +19 -12
  20. package/include/avx10_2_512convertintrin.h +1 -1
  21. package/include/avx10_2_512niintrin.h +31 -31
  22. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  23. package/include/avx10_2bf16intrin.h +54 -45
  24. package/include/avx10_2convertintrin.h +2 -2
  25. package/include/avx10_2copyintrin.h +1 -1
  26. package/include/avx10_2niintrin.h +14 -14
  27. package/include/avx10_2satcvtdsintrin.h +2 -2
  28. package/include/avx2intrin.h +275 -377
  29. package/include/avx512bf16intrin.h +25 -16
  30. package/include/avx512bitalgintrin.h +19 -30
  31. package/include/avx512bwintrin.h +386 -505
  32. package/include/avx512cdintrin.h +42 -55
  33. package/include/avx512dqintrin.h +132 -161
  34. package/include/avx512fintrin.h +1015 -1424
  35. package/include/avx512fp16intrin.h +112 -110
  36. package/include/avx512ifmaintrin.h +32 -34
  37. package/include/avx512ifmavlintrin.h +73 -46
  38. package/include/avx512vbmi2intrin.h +43 -32
  39. package/include/avx512vbmiintrin.h +19 -27
  40. package/include/avx512vbmivlintrin.h +35 -49
  41. package/include/avx512vlbf16intrin.h +32 -22
  42. package/include/avx512vlbitalgintrin.h +37 -53
  43. package/include/avx512vlbwintrin.h +470 -573
  44. package/include/avx512vlcdintrin.h +74 -102
  45. package/include/avx512vldqintrin.h +110 -127
  46. package/include/avx512vlfp16intrin.h +130 -111
  47. package/include/avx512vlintrin.h +945 -1299
  48. package/include/avx512vlvbmi2intrin.h +78 -63
  49. package/include/avx512vlvnniintrin.h +21 -18
  50. package/include/avx512vlvp2intersectintrin.h +2 -2
  51. package/include/avx512vnniintrin.h +10 -10
  52. package/include/avx512vp2intersectintrin.h +1 -2
  53. package/include/avx512vpopcntdqintrin.h +8 -10
  54. package/include/avx512vpopcntdqvlintrin.h +17 -15
  55. package/include/avxifmaintrin.h +16 -0
  56. package/include/avxintrin.h +165 -241
  57. package/include/avxvnniint16intrin.h +118 -99
  58. package/include/avxvnniint8intrin.h +56 -32
  59. package/include/avxvnniintrin.h +16 -8
  60. package/include/cpuid.h +101 -4
  61. package/include/emmintrin.h +168 -168
  62. package/include/f16cintrin.h +23 -9
  63. package/include/float.h +16 -155
  64. package/include/fma4intrin.h +98 -96
  65. package/include/fmaintrin.h +96 -66
  66. package/include/gfniintrin.h +21 -16
  67. package/include/hexagon_types.h +23 -20
  68. package/include/hvx_hexagon_protos.h +649 -860
  69. package/include/immintrin.h +0 -12
  70. package/include/intrin.h +4 -0
  71. package/include/lasxintrin.h +113 -0
  72. package/include/llvm_libc_wrappers/assert.h +3 -5
  73. package/include/llvm_libc_wrappers/ctype.h +3 -115
  74. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  75. package/include/llvm_libc_wrappers/stdio.h +10 -38
  76. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  77. package/include/llvm_libc_wrappers/string.h +2 -70
  78. package/include/llvm_libc_wrappers/time.h +4 -10
  79. package/include/mmintrin.h +188 -257
  80. package/include/module.modulemap +23 -4
  81. package/include/movrs_avx10_2_512intrin.h +2 -2
  82. package/include/movrs_avx10_2intrin.h +4 -4
  83. package/include/pmmintrin.h +12 -24
  84. package/include/ptrauth.h +16 -2
  85. package/include/riscv_mips.h +34 -0
  86. package/include/riscv_nds.h +89 -0
  87. package/include/sifive_vector.h +58 -2
  88. package/include/sm4evexintrin.h +2 -2
  89. package/include/smmintrin.h +77 -59
  90. package/include/spirvintrin.h +194 -0
  91. package/include/stddefer.h +19 -0
  92. package/include/tmmintrin.h +116 -147
  93. package/include/vaesintrin.h +1 -2
  94. package/include/xmmintrin.h +44 -70
  95. package/include/xopintrin.h +20 -10
  96. package/libcxx/include/__algorithm/all_of.h +11 -5
  97. package/libcxx/include/__algorithm/comp.h +4 -0
  98. package/libcxx/include/__algorithm/copy.h +28 -147
  99. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  100. package/libcxx/include/__algorithm/copy_n.h +50 -16
  101. package/libcxx/include/__algorithm/count.h +2 -2
  102. package/libcxx/include/__algorithm/equal.h +43 -55
  103. package/libcxx/include/__algorithm/fill.h +26 -8
  104. package/libcxx/include/__algorithm/fill_n.h +32 -46
  105. package/libcxx/include/__algorithm/find.h +96 -39
  106. package/libcxx/include/__algorithm/find_end.h +105 -0
  107. package/libcxx/include/__algorithm/for_each.h +18 -24
  108. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  109. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  110. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  111. package/libcxx/include/__algorithm/generate.h +4 -2
  112. package/libcxx/include/__algorithm/generate_n.h +19 -6
  113. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  114. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  115. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  116. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  117. package/libcxx/include/__algorithm/make_heap.h +16 -4
  118. package/libcxx/include/__algorithm/mismatch.h +2 -2
  119. package/libcxx/include/__algorithm/move.h +8 -19
  120. package/libcxx/include/__algorithm/move_backward.h +9 -24
  121. package/libcxx/include/__algorithm/none_of.h +4 -4
  122. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  123. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  124. package/libcxx/include/__algorithm/pstl.h +9 -9
  125. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  126. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  127. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  128. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  129. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  130. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  131. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  132. package/libcxx/include/__algorithm/rotate.h +27 -44
  133. package/libcxx/include/__algorithm/search_n.h +49 -37
  134. package/libcxx/include/__algorithm/sift_down.h +19 -18
  135. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  136. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  137. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  138. package/libcxx/include/__assertion_handler +31 -4
  139. package/libcxx/include/__atomic/atomic.h +36 -60
  140. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  141. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  142. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  143. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  144. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  145. package/libcxx/include/__atomic/contention_t.h +27 -3
  146. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  147. package/libcxx/include/__bit/countl.h +1 -2
  148. package/libcxx/include/__bit/countr.h +1 -2
  149. package/libcxx/include/__bit/has_single_bit.h +1 -1
  150. package/libcxx/include/__bit/popcount.h +0 -1
  151. package/libcxx/include/__bit/rotate.h +15 -26
  152. package/libcxx/include/__bit_reference +207 -18
  153. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  154. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  155. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  156. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  157. package/libcxx/include/__charconv/traits.h +3 -24
  158. package/libcxx/include/__chrono/day.h +11 -0
  159. package/libcxx/include/__chrono/duration.h +58 -33
  160. package/libcxx/include/__chrono/file_clock.h +4 -2
  161. package/libcxx/include/__chrono/is_clock.h +72 -0
  162. package/libcxx/include/__chrono/leap_second.h +13 -0
  163. package/libcxx/include/__chrono/month.h +13 -0
  164. package/libcxx/include/__chrono/month_weekday.h +22 -0
  165. package/libcxx/include/__chrono/monthday.h +20 -0
  166. package/libcxx/include/__chrono/steady_clock.h +1 -1
  167. package/libcxx/include/__chrono/system_clock.h +3 -3
  168. package/libcxx/include/__chrono/time_point.h +37 -13
  169. package/libcxx/include/__chrono/weekday.h +25 -0
  170. package/libcxx/include/__chrono/year.h +11 -0
  171. package/libcxx/include/__chrono/year_month.h +13 -0
  172. package/libcxx/include/__chrono/year_month_day.h +23 -0
  173. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  174. package/libcxx/include/__chrono/zoned_time.h +16 -0
  175. package/libcxx/include/__compare/is_eq.h +6 -6
  176. package/libcxx/include/__compare/strong_order.h +12 -30
  177. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  178. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  179. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  180. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  181. package/libcxx/include/__config +63 -280
  182. package/libcxx/include/__configuration/abi.h +14 -24
  183. package/libcxx/include/__configuration/availability.h +65 -118
  184. package/libcxx/include/__configuration/compiler.h +6 -6
  185. package/libcxx/include/__configuration/experimental.h +38 -0
  186. package/libcxx/include/__configuration/hardening.h +215 -0
  187. package/libcxx/include/__configuration/language.h +3 -0
  188. package/libcxx/include/__configuration/platform.h +9 -16
  189. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  190. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  191. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  192. package/libcxx/include/__exception/exception.h +6 -4
  193. package/libcxx/include/__exception/exception_ptr.h +27 -5
  194. package/libcxx/include/__exception/nested_exception.h +2 -2
  195. package/libcxx/include/__exception/operations.h +5 -5
  196. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  197. package/libcxx/include/__expected/expected.h +62 -64
  198. package/libcxx/include/__expected/unexpected.h +4 -4
  199. package/libcxx/include/__filesystem/copy_options.h +4 -4
  200. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  201. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  202. package/libcxx/include/__filesystem/directory_options.h +7 -4
  203. package/libcxx/include/__filesystem/file_status.h +3 -3
  204. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  205. package/libcxx/include/__filesystem/operations.h +97 -66
  206. package/libcxx/include/__filesystem/path.h +68 -64
  207. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  208. package/libcxx/include/__filesystem/perm_options.h +4 -4
  209. package/libcxx/include/__filesystem/perms.h +4 -4
  210. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  211. package/libcxx/include/__filesystem/space_info.h +1 -1
  212. package/libcxx/include/__filesystem/u8path.h +12 -14
  213. package/libcxx/include/__flat_map/flat_map.h +88 -71
  214. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  215. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  216. package/libcxx/include/__flat_map/utils.h +1 -0
  217. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  218. package/libcxx/include/__flat_set/flat_set.h +86 -68
  219. package/libcxx/include/__format/concepts.h +0 -14
  220. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  221. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  222. package/libcxx/include/__format/format_arg.h +7 -10
  223. package/libcxx/include/__format/format_args.h +1 -1
  224. package/libcxx/include/__format/format_context.h +5 -5
  225. package/libcxx/include/__format/format_parse_context.h +2 -2
  226. package/libcxx/include/__format/formatter_output.h +30 -34
  227. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  228. package/libcxx/include/__format/range_default_formatter.h +2 -41
  229. package/libcxx/include/__format/range_format.h +71 -0
  230. package/libcxx/include/__format/range_formatter.h +1 -0
  231. package/libcxx/include/__format/width_estimation_table.h +4 -2
  232. package/libcxx/include/__functional/bind.h +10 -15
  233. package/libcxx/include/__functional/bind_back.h +1 -1
  234. package/libcxx/include/__functional/bind_front.h +1 -1
  235. package/libcxx/include/__functional/function.h +57 -75
  236. package/libcxx/include/__functional/hash.h +1 -10
  237. package/libcxx/include/__functional/identity.h +1 -1
  238. package/libcxx/include/__functional/is_transparent.h +8 -0
  239. package/libcxx/include/__functional/mem_fn.h +2 -1
  240. package/libcxx/include/__functional/operations.h +18 -0
  241. package/libcxx/include/__functional/ranges_operations.h +7 -0
  242. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  243. package/libcxx/include/__functional/weak_result_type.h +14 -28
  244. package/libcxx/include/__fwd/ios.h +1 -1
  245. package/libcxx/include/__fwd/tuple.h +14 -0
  246. package/libcxx/include/__hash_table +371 -357
  247. package/libcxx/include/__ios/fpos.h +4 -4
  248. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  249. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  250. package/libcxx/include/__iterator/concepts.h +6 -9
  251. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  252. package/libcxx/include/__iterator/distance.h +40 -18
  253. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  254. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  255. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  256. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  257. package/libcxx/include/__iterator/iter_move.h +1 -1
  258. package/libcxx/include/__iterator/iterator.h +13 -0
  259. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  260. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  261. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  262. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  263. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  264. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  265. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  266. package/libcxx/include/__locale +3 -10
  267. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  268. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  269. package/libcxx/include/__locale_dir/messages.h +1 -1
  270. package/libcxx/include/__locale_dir/money.h +2 -2
  271. package/libcxx/include/__locale_dir/num.h +190 -243
  272. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  273. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  274. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  275. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  276. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  277. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  278. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  279. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  280. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  281. package/libcxx/include/__locale_dir/time.h +3 -7
  282. package/libcxx/include/__math/hypot.h +1 -1
  283. package/libcxx/include/__math/logarithms.h +1 -1
  284. package/libcxx/include/__math/traits.h +80 -11
  285. package/libcxx/include/__mdspan/extents.h +7 -4
  286. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  287. package/libcxx/include/__mdspan/mdspan.h +29 -23
  288. package/libcxx/include/__memory/addressof.h +7 -5
  289. package/libcxx/include/__memory/align.h +18 -1
  290. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  291. package/libcxx/include/__memory/allocator.h +14 -26
  292. package/libcxx/include/__memory/allocator_traits.h +6 -4
  293. package/libcxx/include/__memory/compressed_pair.h +15 -9
  294. package/libcxx/include/__memory/construct_at.h +12 -23
  295. package/libcxx/include/__memory/inout_ptr.h +1 -1
  296. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  297. package/libcxx/include/__memory/out_ptr.h +1 -1
  298. package/libcxx/include/__memory/pointer_traits.h +1 -1
  299. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  300. package/libcxx/include/__memory/shared_count.h +9 -30
  301. package/libcxx/include/__memory/shared_ptr.h +100 -145
  302. package/libcxx/include/__memory/temp_value.h +1 -2
  303. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  304. package/libcxx/include/__memory/unique_ptr.h +14 -16
  305. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  306. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  307. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  308. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  309. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  310. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  311. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  312. package/libcxx/include/__mutex/mutex.h +2 -2
  313. package/libcxx/include/__mutex/once_flag.h +14 -11
  314. package/libcxx/include/__mutex/tag_types.h +3 -3
  315. package/libcxx/include/__mutex/unique_lock.h +8 -7
  316. package/libcxx/include/__new/align_val_t.h +6 -0
  317. package/libcxx/include/__new/allocate.h +1 -2
  318. package/libcxx/include/__new/exceptions.h +8 -2
  319. package/libcxx/include/__new/global_new_delete.h +4 -11
  320. package/libcxx/include/__new/interference_size.h +0 -4
  321. package/libcxx/include/__new/launder.h +3 -5
  322. package/libcxx/include/__new/nothrow_t.h +1 -1
  323. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  324. package/libcxx/include/__numeric/midpoint.h +9 -14
  325. package/libcxx/include/__numeric/pstl.h +2 -2
  326. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  327. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  328. package/libcxx/include/__pstl/backends/default.h +14 -14
  329. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  330. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  331. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  332. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  333. package/libcxx/include/__random/binomial_distribution.h +10 -4
  334. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  335. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  336. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  337. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  338. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  339. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  340. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  341. package/libcxx/include/__ranges/common_view.h +7 -7
  342. package/libcxx/include/__ranges/drop_view.h +8 -8
  343. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  344. package/libcxx/include/__ranges/elements_of.h +49 -0
  345. package/libcxx/include/__ranges/empty_view.h +5 -5
  346. package/libcxx/include/__ranges/filter_view.h +10 -10
  347. package/libcxx/include/__ranges/iota_view.h +41 -22
  348. package/libcxx/include/__ranges/owning_view.h +15 -15
  349. package/libcxx/include/__ranges/ref_view.h +6 -6
  350. package/libcxx/include/__ranges/repeat_view.h +17 -10
  351. package/libcxx/include/__ranges/single_view.h +8 -8
  352. package/libcxx/include/__ranges/take_view.h +9 -9
  353. package/libcxx/include/__ranges/transform_view.h +1 -2
  354. package/libcxx/include/__ranges/view_interface.h +10 -10
  355. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  356. package/libcxx/include/__ranges/zip_view.h +20 -20
  357. package/libcxx/include/__split_buffer +612 -240
  358. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  359. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  360. package/libcxx/include/__stop_token/stop_source.h +1 -1
  361. package/libcxx/include/__stop_token/stop_state.h +4 -4
  362. package/libcxx/include/__stop_token/stop_token.h +1 -1
  363. package/libcxx/include/__string/char_traits.h +51 -31
  364. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  365. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  366. package/libcxx/include/__system_error/error_category.h +8 -8
  367. package/libcxx/include/__system_error/error_code.h +5 -5
  368. package/libcxx/include/__system_error/error_condition.h +4 -4
  369. package/libcxx/include/__system_error/system_error.h +1 -1
  370. package/libcxx/include/__thread/id.h +1 -1
  371. package/libcxx/include/__thread/jthread.h +1 -1
  372. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  373. package/libcxx/include/__thread/support/c11.h +8 -8
  374. package/libcxx/include/__thread/support/pthread.h +8 -8
  375. package/libcxx/include/__thread/support/windows.h +8 -8
  376. package/libcxx/include/__thread/thread.h +13 -8
  377. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  378. package/libcxx/include/__tree +849 -701
  379. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  380. package/libcxx/include/__tuple/tuple_element.h +0 -12
  381. package/libcxx/include/__tuple/tuple_size.h +0 -4
  382. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  383. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  384. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  385. package/libcxx/include/__type_traits/invoke.h +8 -0
  386. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  387. package/libcxx/include/__type_traits/is_array.h +26 -0
  388. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  389. package/libcxx/include/__type_traits/is_final.h +1 -1
  390. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  391. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  392. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  393. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  394. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  395. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  396. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  397. package/libcxx/include/__utility/cmp.h +19 -7
  398. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  399. package/libcxx/include/__utility/in_place.h +1 -1
  400. package/libcxx/include/__utility/integer_sequence.h +56 -41
  401. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  402. package/libcxx/include/__utility/pair.h +22 -25
  403. package/libcxx/include/__utility/scope_guard.h +2 -0
  404. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  405. package/libcxx/include/__vector/vector.h +187 -160
  406. package/libcxx/include/__vector/vector_bool.h +76 -83
  407. package/libcxx/include/any +118 -155
  408. package/libcxx/include/array +88 -56
  409. package/libcxx/include/atomic +2 -0
  410. package/libcxx/include/barrier +20 -24
  411. package/libcxx/include/bitset +49 -30
  412. package/libcxx/include/ccomplex +3 -11
  413. package/libcxx/include/chrono +47 -0
  414. package/libcxx/include/ciso646 +3 -6
  415. package/libcxx/include/complex +77 -65
  416. package/libcxx/include/complex.h +10 -10
  417. package/libcxx/include/condition_variable +3 -3
  418. package/libcxx/include/cstdalign +3 -10
  419. package/libcxx/include/cstdbool +3 -10
  420. package/libcxx/include/ctgmath +2 -11
  421. package/libcxx/include/ctype.h +24 -24
  422. package/libcxx/include/cwchar +2 -2
  423. package/libcxx/include/deque +109 -225
  424. package/libcxx/include/errno.h +269 -269
  425. package/libcxx/include/exception +4 -1
  426. package/libcxx/include/ext/hash_map +7 -48
  427. package/libcxx/include/ext/hash_set +2 -8
  428. package/libcxx/include/fenv.h +43 -43
  429. package/libcxx/include/flat_map +663 -11
  430. package/libcxx/include/flat_set +543 -8
  431. package/libcxx/include/float.h +16 -16
  432. package/libcxx/include/forward_list +33 -53
  433. package/libcxx/include/fstream +57 -42
  434. package/libcxx/include/future +41 -51
  435. package/libcxx/include/initializer_list +9 -3
  436. package/libcxx/include/inttypes.h +16 -16
  437. package/libcxx/include/ios +28 -28
  438. package/libcxx/include/istream +19 -13
  439. package/libcxx/include/iterator +10 -0
  440. package/libcxx/include/latch +7 -5
  441. package/libcxx/include/limits +4 -4
  442. package/libcxx/include/list +61 -79
  443. package/libcxx/include/map +386 -274
  444. package/libcxx/include/math.h +19 -0
  445. package/libcxx/include/mdspan +1 -5
  446. package/libcxx/include/mutex +29 -19
  447. package/libcxx/include/optional +644 -149
  448. package/libcxx/include/print +9 -5
  449. package/libcxx/include/queue +39 -37
  450. package/libcxx/include/ranges +48 -0
  451. package/libcxx/include/regex +33 -31
  452. package/libcxx/include/scoped_allocator +16 -11
  453. package/libcxx/include/semaphore +15 -18
  454. package/libcxx/include/set +220 -192
  455. package/libcxx/include/shared_mutex +3 -8
  456. package/libcxx/include/span +53 -37
  457. package/libcxx/include/sstream +34 -28
  458. package/libcxx/include/stack +13 -15
  459. package/libcxx/include/stddef.h +10 -10
  460. package/libcxx/include/stdexcept +2 -2
  461. package/libcxx/include/stdio.h +20 -21
  462. package/libcxx/include/streambuf +59 -19
  463. package/libcxx/include/string +574 -573
  464. package/libcxx/include/string_view +113 -89
  465. package/libcxx/include/strstream +10 -10
  466. package/libcxx/include/syncstream +4 -4
  467. package/libcxx/include/tgmath.h +12 -12
  468. package/libcxx/include/tuple +242 -212
  469. package/libcxx/include/type_traits +8 -2
  470. package/libcxx/include/typeindex +5 -3
  471. package/libcxx/include/typeinfo +92 -89
  472. package/libcxx/include/unordered_map +179 -304
  473. package/libcxx/include/unordered_set +168 -195
  474. package/libcxx/include/utility +12 -0
  475. package/libcxx/include/valarray +106 -161
  476. package/libcxx/include/variant +25 -33
  477. package/libcxx/include/version +41 -24
  478. package/libcxx/include/wctype.h +29 -29
  479. package/libcxx/libc/hdr/errno_macros.h +3 -1
  480. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  481. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  482. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  483. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  484. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  485. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  486. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  487. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  488. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  489. package/libcxx/libc/shared/libc_common.h +5 -0
  490. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  491. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  492. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  493. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  494. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  495. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  496. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  497. package/libcxx/libc/src/__support/big_int.h +14 -14
  498. package/libcxx/libc/src/__support/common.h +3 -2
  499. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  500. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  501. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  502. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  503. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  504. package/libcxx/libc/src/__support/macros/config.h +23 -0
  505. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  506. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  507. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  508. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  509. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  510. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  511. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  512. package/libcxx/libc/src/__support/math_extras.h +20 -4
  513. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  514. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  515. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  516. package/libcxx/src/any.cpp +4 -0
  517. package/libcxx/src/atomic.cpp +365 -80
  518. package/libcxx/src/barrier.cpp +4 -3
  519. package/libcxx/src/charconv.cpp +6 -3
  520. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  521. package/libcxx/src/error_category.cpp +3 -1
  522. package/libcxx/src/exception.cpp +2 -10
  523. package/libcxx/src/experimental/time_zone.cpp +1 -1
  524. package/libcxx/src/experimental/tzdb.cpp +4 -1
  525. package/libcxx/src/filesystem/error.h +4 -22
  526. package/libcxx/src/filesystem/format_string.h +9 -18
  527. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  528. package/libcxx/src/filesystem/operations.cpp +2 -9
  529. package/libcxx/src/filesystem/path.cpp +3 -1
  530. package/libcxx/src/include/aligned_alloc.h +65 -0
  531. package/libcxx/src/include/config_elast.h +1 -1
  532. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  533. package/libcxx/src/include/overridable_function.h +8 -10
  534. package/libcxx/src/iostream.cpp +56 -37
  535. package/libcxx/src/locale.cpp +213 -196
  536. package/libcxx/src/memory.cpp +12 -14
  537. package/libcxx/src/mutex_destructor.cpp +1 -1
  538. package/libcxx/src/new.cpp +5 -5
  539. package/libcxx/src/optional.cpp +4 -0
  540. package/libcxx/src/print.cpp +9 -1
  541. package/libcxx/src/random.cpp +0 -26
  542. package/libcxx/src/string.cpp +10 -25
  543. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  544. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  545. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  546. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  547. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  548. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  549. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  550. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  551. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  552. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  553. package/libcxx/src/system_error.cpp +2 -0
  554. package/libcxx/src/thread.cpp +1 -3
  555. package/libcxx/src/valarray.cpp +1 -2
  556. package/libcxx/src/vector.cpp +2 -2
  557. package/libcxxabi/include/__cxxabi_config.h +42 -23
  558. package/libcxxabi/src/cxa_exception.cpp +4 -2
  559. package/libcxxabi/src/cxa_exception.h +16 -14
  560. package/libcxxabi/src/cxa_personality.cpp +126 -9
  561. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  562. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  563. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  564. package/libcxxabi/src/demangle/Utility.h +21 -7
  565. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  566. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  567. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  568. package/libtsan/LICENSE.TXT +311 -0
  569. package/libtsan/builtins/assembly.h +41 -8
  570. package/libtsan/interception/interception_win.cpp +4 -0
  571. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  572. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  573. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  574. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  575. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  576. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  577. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  578. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  579. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  580. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  581. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  582. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  583. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  584. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  585. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  586. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  587. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  588. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  589. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  590. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  591. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  592. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  593. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  594. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  595. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  596. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  597. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  598. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  599. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  600. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  601. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  602. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  603. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  604. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  605. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  606. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  607. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  608. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  609. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  610. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  611. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  612. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  613. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  614. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  615. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  616. package/libtsan/tsan_debugging.cpp +2 -2
  617. package/libtsan/tsan_flags.cpp +37 -0
  618. package/libtsan/tsan_flags.h +8 -0
  619. package/libtsan/tsan_flags.inc +12 -0
  620. package/libtsan/tsan_interceptors.h +9 -1
  621. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  622. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  623. package/libtsan/tsan_interface.h +3 -3
  624. package/libtsan/tsan_interface_ann.cpp +23 -9
  625. package/libtsan/tsan_mman.cpp +18 -4
  626. package/libtsan/tsan_platform.h +44 -7
  627. package/libtsan/tsan_platform_linux.cpp +42 -14
  628. package/libtsan/tsan_platform_mac.cpp +16 -3
  629. package/libtsan/tsan_report.h +14 -1
  630. package/libtsan/tsan_rtl.cpp +14 -0
  631. package/libtsan/tsan_rtl.h +7 -2
  632. package/libtsan/tsan_rtl_aarch64.S +3 -5
  633. package/libtsan/tsan_rtl_access.cpp +8 -3
  634. package/libtsan/tsan_rtl_amd64.S +2 -0
  635. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  636. package/libtsan/tsan_rtl_report.cpp +132 -65
  637. package/libtsan/tsan_rtl_thread.cpp +31 -9
  638. package/libtsan/tsan_symbolize.cpp +1 -1
  639. package/libtsan/tsan_symbolize.h +1 -1
  640. package/libtsan/tsan_trace.h +1 -1
  641. package/libunwind/include/__libunwind_config.h +11 -2
  642. package/libunwind/include/libunwind.h +117 -11
  643. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  644. package/libunwind/src/AddressSpace.hpp +42 -20
  645. package/libunwind/src/CompactUnwinder.hpp +16 -5
  646. package/libunwind/src/DwarfInstructions.hpp +24 -13
  647. package/libunwind/src/DwarfParser.hpp +62 -23
  648. package/libunwind/src/EHHeaderParser.hpp +7 -4
  649. package/libunwind/src/Registers.hpp +226 -22
  650. package/libunwind/src/Unwind-seh.cpp +6 -7
  651. package/libunwind/src/Unwind-wasm.c +7 -7
  652. package/libunwind/src/UnwindCursor.hpp +167 -49
  653. package/libunwind/src/UnwindLevel1.c +46 -17
  654. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  655. package/libunwind/src/UnwindRegistersSave.S +86 -2
  656. package/libunwind/src/assembly.h +5 -1
  657. package/libunwind/src/config.h +9 -0
  658. package/libunwind/src/gcc_personality_v0.c +79 -6
  659. package/libunwind/src/libunwind.cpp +104 -4
  660. package/libunwind/src/libunwind_ext.h +7 -1
  661. package/libunwind/src/shadow_stack_unwind.h +2 -2
  662. package/lldb/pretty_printers.py +948 -0
  663. package/package.json +1 -1
  664. package/std/Build/Step/Compile.zig +18 -19
  665. package/std/Build/Step/Run.zig +13 -6
  666. package/std/Build/Step.zig +0 -3
  667. package/std/Io/Threaded.zig +3 -0
  668. package/std/Target/aarch64.zig +620 -77
  669. package/std/Target/amdgcn.zig +421 -21
  670. package/std/Target/arm.zig +40 -6
  671. package/std/Target/bpf.zig +6 -0
  672. package/std/Target/hexagon.zig +41 -6
  673. package/std/Target/loongarch.zig +18 -0
  674. package/std/Target/mips.zig +6 -0
  675. package/std/Target/nvptx.zig +58 -35
  676. package/std/Target/powerpc.zig +27 -19
  677. package/std/Target/riscv.zig +415 -177
  678. package/std/Target/sparc.zig +17 -0
  679. package/std/Target/wasm.zig +7 -0
  680. package/std/Target/x86.zig +200 -31
  681. package/std/Target/xtensa.zig +65 -0
  682. package/std/Target.zig +16 -8
  683. package/std/c.zig +7 -0
  684. package/std/crypto/ml_kem.zig +0 -15
  685. package/std/debug/Dwarf.zig +14 -11
  686. package/std/debug/Pdb.zig +24 -16
  687. package/std/hash/xxhash.zig +0 -6
  688. package/std/math/log10.zig +0 -2
  689. package/std/math/modf.zig +1 -2
  690. package/std/mem.zig +1 -2
  691. package/std/os/linux/x86.zig +2 -2
  692. package/std/os/windows.zig +130 -1
  693. package/std/simd.zig +4 -21
  694. package/std/start.zig +4 -3
  695. package/std/zig/Ast.zig +5 -7
  696. package/std/zig/AstGen.zig +20 -14
  697. package/std/zig/ErrorBundle.zig +6 -2
  698. package/std/zig/ZonGen.zig +13 -21
  699. package/std/zig/llvm/Builder.zig +2 -2
  700. package/std/zig/system/arm.zig +56 -2
  701. package/std/zig/system/windows.zig +34 -1
  702. package/std/zig/system/x86.zig +60 -16
  703. package/std/zig/system.zig +0 -10
  704. package/std/zig/target.zig +1 -2
  705. package/std/zon/parse.zig +1 -1
  706. package/include/amxbf16transposeintrin.h +0 -94
  707. package/include/amxcomplextransposeintrin.h +0 -303
  708. package/include/amxfp16transposeintrin.h +0 -94
  709. package/include/amxmovrstransposeintrin.h +0 -200
  710. package/include/amxtf32transposeintrin.h +0 -105
  711. package/include/amxtransposeintrin.h +0 -248
  712. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  713. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -600,6 +600,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
600
600
  # include <__memory/addressof.h>
601
601
  # include <__memory/allocator.h>
602
602
  # include <__memory/allocator_traits.h>
603
+ # include <__memory/compressed_pair.h>
603
604
  # include <__memory/pointer_traits.h>
604
605
  # include <__memory/unique_ptr.h>
605
606
  # include <__memory_resource/polymorphic_allocator.h>
@@ -643,34 +644,9 @@ _LIBCPP_PUSH_MACROS
643
644
 
644
645
  _LIBCPP_BEGIN_NAMESPACE_STD
645
646
 
646
- template <class _Key,
647
- class _Cp,
648
- class _Hash,
649
- class _Pred,
650
- bool = is_empty<_Hash>::value && !__libcpp_is_final<_Hash>::value>
651
- class __unordered_map_hasher : private _Hash {
652
- public:
653
- _LIBCPP_HIDE_FROM_ABI __unordered_map_hasher() _NOEXCEPT_(is_nothrow_default_constructible<_Hash>::value) : _Hash() {}
654
- _LIBCPP_HIDE_FROM_ABI __unordered_map_hasher(const _Hash& __h) _NOEXCEPT_(is_nothrow_copy_constructible<_Hash>::value)
655
- : _Hash(__h) {}
656
- _LIBCPP_HIDE_FROM_ABI const _Hash& hash_function() const _NOEXCEPT { return *this; }
657
- _LIBCPP_HIDE_FROM_ABI size_t operator()(const _Cp& __x) const { return static_cast<const _Hash&>(*this)(__x.first); }
658
- _LIBCPP_HIDE_FROM_ABI size_t operator()(const _Key& __x) const { return static_cast<const _Hash&>(*this)(__x); }
659
- # if _LIBCPP_STD_VER >= 20
660
- template <typename _K2>
661
- _LIBCPP_HIDE_FROM_ABI size_t operator()(const _K2& __x) const {
662
- return static_cast<const _Hash&>(*this)(__x);
663
- }
664
- # endif
665
- _LIBCPP_HIDE_FROM_ABI void swap(__unordered_map_hasher& __y) _NOEXCEPT_(__is_nothrow_swappable_v<_Hash>) {
666
- using std::swap;
667
- swap(static_cast<_Hash&>(*this), static_cast<_Hash&>(__y));
668
- }
669
- };
670
-
671
647
  template <class _Key, class _Cp, class _Hash, class _Pred>
672
- class __unordered_map_hasher<_Key, _Cp, _Hash, _Pred, false> {
673
- _Hash __hash_;
648
+ class __unordered_map_hasher {
649
+ _LIBCPP_COMPRESSED_ELEMENT(_Hash, __hash_);
674
650
 
675
651
  public:
676
652
  _LIBCPP_HIDE_FROM_ABI __unordered_map_hasher() _NOEXCEPT_(is_nothrow_default_constructible<_Hash>::value)
@@ -692,60 +668,16 @@ public:
692
668
  }
693
669
  };
694
670
 
695
- template <class _Key, class _Cp, class _Hash, class _Pred, bool __b>
671
+ template <class _Key, class _Cp, class _Hash, class _Pred>
696
672
  inline _LIBCPP_HIDE_FROM_ABI void
697
- swap(__unordered_map_hasher<_Key, _Cp, _Hash, _Pred, __b>& __x,
698
- __unordered_map_hasher<_Key, _Cp, _Hash, _Pred, __b>& __y) _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
673
+ swap(__unordered_map_hasher<_Key, _Cp, _Hash, _Pred>& __x, __unordered_map_hasher<_Key, _Cp, _Hash, _Pred>& __y)
674
+ _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
699
675
  __x.swap(__y);
700
676
  }
701
677
 
702
- template <class _Key,
703
- class _Cp,
704
- class _Pred,
705
- class _Hash,
706
- bool = is_empty<_Pred>::value && !__libcpp_is_final<_Pred>::value>
707
- class __unordered_map_equal : private _Pred {
708
- public:
709
- _LIBCPP_HIDE_FROM_ABI __unordered_map_equal() _NOEXCEPT_(is_nothrow_default_constructible<_Pred>::value) : _Pred() {}
710
- _LIBCPP_HIDE_FROM_ABI __unordered_map_equal(const _Pred& __p) _NOEXCEPT_(is_nothrow_copy_constructible<_Pred>::value)
711
- : _Pred(__p) {}
712
- _LIBCPP_HIDE_FROM_ABI const _Pred& key_eq() const _NOEXCEPT { return *this; }
713
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _Cp& __x, const _Cp& __y) const {
714
- return static_cast<const _Pred&>(*this)(__x.first, __y.first);
715
- }
716
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _Cp& __x, const _Key& __y) const {
717
- return static_cast<const _Pred&>(*this)(__x.first, __y);
718
- }
719
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _Key& __x, const _Cp& __y) const {
720
- return static_cast<const _Pred&>(*this)(__x, __y.__get_value().first);
721
- }
722
- # if _LIBCPP_STD_VER >= 20
723
- template <typename _K2>
724
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _Cp& __x, const _K2& __y) const {
725
- return static_cast<const _Pred&>(*this)(__x.first, __y);
726
- }
727
- template <typename _K2>
728
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _K2& __x, const _Cp& __y) const {
729
- return static_cast<const _Pred&>(*this)(__x, __y.__get_value().first);
730
- }
731
- template <typename _K2>
732
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _Key& __x, const _K2& __y) const {
733
- return static_cast<const _Pred&>(*this)(__x, __y);
734
- }
735
- template <typename _K2>
736
- _LIBCPP_HIDE_FROM_ABI bool operator()(const _K2& __x, const _Key& __y) const {
737
- return static_cast<const _Pred&>(*this)(__x, __y);
738
- }
739
- # endif
740
- _LIBCPP_HIDE_FROM_ABI void swap(__unordered_map_equal& __y) _NOEXCEPT_(__is_nothrow_swappable_v<_Pred>) {
741
- using std::swap;
742
- swap(static_cast<_Pred&>(*this), static_cast<_Pred&>(__y));
743
- }
744
- };
745
-
746
678
  template <class _Key, class _Cp, class _Pred, class _Hash>
747
- class __unordered_map_equal<_Key, _Cp, _Pred, _Hash, false> {
748
- _Pred __pred_;
679
+ class __unordered_map_equal {
680
+ _LIBCPP_COMPRESSED_ELEMENT(_Pred, __pred_);
749
681
 
750
682
  public:
751
683
  _LIBCPP_HIDE_FROM_ABI __unordered_map_equal() _NOEXCEPT_(is_nothrow_default_constructible<_Pred>::value)
@@ -780,9 +712,9 @@ public:
780
712
  }
781
713
  };
782
714
 
783
- template <class _Key, class _Cp, class _Pred, class _Hash, bool __b>
715
+ template <class _Key, class _Cp, class _Pred, class _Hash>
784
716
  inline _LIBCPP_HIDE_FROM_ABI void
785
- swap(__unordered_map_equal<_Key, _Cp, _Pred, _Hash, __b>& __x, __unordered_map_equal<_Key, _Cp, _Pred, _Hash, __b>& __y)
717
+ swap(__unordered_map_equal<_Key, _Cp, _Pred, _Hash>& __x, __unordered_map_equal<_Key, _Cp, _Pred, _Hash>& __y)
786
718
  _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
787
719
  __x.swap(__y);
788
720
  }
@@ -844,10 +776,10 @@ class __hash_map_iterator {
844
776
 
845
777
  public:
846
778
  typedef forward_iterator_tag iterator_category;
847
- typedef typename _NodeTypes::__map_value_type value_type;
848
- typedef typename _NodeTypes::difference_type difference_type;
779
+ using value_type = typename _HashIterator::value_type;
780
+ using difference_type = ptrdiff_t;
849
781
  typedef value_type& reference;
850
- typedef typename _NodeTypes::__map_value_type_pointer pointer;
782
+ using pointer = typename _HashIterator::pointer;
851
783
 
852
784
  _LIBCPP_HIDE_FROM_ABI __hash_map_iterator() _NOEXCEPT {}
853
785
 
@@ -895,10 +827,10 @@ class __hash_map_const_iterator {
895
827
 
896
828
  public:
897
829
  typedef forward_iterator_tag iterator_category;
898
- typedef typename _NodeTypes::__map_value_type value_type;
899
- typedef typename _NodeTypes::difference_type difference_type;
830
+ using value_type = typename _HashIterator::value_type;
831
+ using difference_type = ptrdiff_t;
900
832
  typedef const value_type& reference;
901
- typedef typename _NodeTypes::__const_map_value_type_pointer pointer;
833
+ using pointer = typename _HashIterator::pointer;
902
834
 
903
835
  _LIBCPP_HIDE_FROM_ABI __hash_map_const_iterator() _NOEXCEPT {}
904
836
 
@@ -972,9 +904,6 @@ private:
972
904
 
973
905
  __table __table_;
974
906
 
975
- typedef typename __table::_NodeTypes _NodeTypes;
976
- typedef typename __table::__node_pointer __node_pointer;
977
- typedef typename __table::__node_const_pointer __node_const_pointer;
978
907
  typedef typename __table::__node_traits __node_traits;
979
908
  typedef typename __table::__node_allocator __node_allocator;
980
909
  typedef typename __table::__node __node;
@@ -1046,10 +975,10 @@ public:
1046
975
  # endif
1047
976
 
1048
977
  _LIBCPP_HIDE_FROM_ABI explicit unordered_map(const allocator_type& __a);
1049
- _LIBCPP_HIDE_FROM_ABI unordered_map(const unordered_map& __u);
978
+ _LIBCPP_HIDE_FROM_ABI unordered_map(const unordered_map& __u) = default;
1050
979
  _LIBCPP_HIDE_FROM_ABI unordered_map(const unordered_map& __u, const allocator_type& __a);
1051
980
  # ifndef _LIBCPP_CXX03_LANG
1052
- _LIBCPP_HIDE_FROM_ABI unordered_map(unordered_map&& __u) _NOEXCEPT_(is_nothrow_move_constructible<__table>::value);
981
+ _LIBCPP_HIDE_FROM_ABI unordered_map(unordered_map&& __u) = default;
1053
982
  _LIBCPP_HIDE_FROM_ABI unordered_map(unordered_map&& __u, const allocator_type& __a);
1054
983
  _LIBCPP_HIDE_FROM_ABI unordered_map(initializer_list<value_type> __il);
1055
984
  _LIBCPP_HIDE_FROM_ABI
@@ -1099,41 +1028,26 @@ public:
1099
1028
  static_assert(sizeof(std::__diagnose_unordered_container_requirements<_Key, _Hash, _Pred>(0)), "");
1100
1029
  }
1101
1030
 
1102
- _LIBCPP_HIDE_FROM_ABI unordered_map& operator=(const unordered_map& __u) {
1103
- # ifndef _LIBCPP_CXX03_LANG
1104
- __table_ = __u.__table_;
1105
- # else
1106
- if (this != std::addressof(__u)) {
1107
- __table_.clear();
1108
- __table_.hash_function() = __u.__table_.hash_function();
1109
- __table_.key_eq() = __u.__table_.key_eq();
1110
- __table_.max_load_factor() = __u.__table_.max_load_factor();
1111
- __table_.__copy_assign_alloc(__u.__table_);
1112
- insert(__u.begin(), __u.end());
1113
- }
1114
- # endif
1115
- return *this;
1116
- }
1031
+ _LIBCPP_HIDE_FROM_ABI unordered_map& operator=(const unordered_map& __u) = default;
1117
1032
  # ifndef _LIBCPP_CXX03_LANG
1118
- _LIBCPP_HIDE_FROM_ABI unordered_map& operator=(unordered_map&& __u)
1119
- _NOEXCEPT_(is_nothrow_move_assignable<__table>::value);
1033
+ _LIBCPP_HIDE_FROM_ABI unordered_map& operator=(unordered_map&& __u) = default;
1120
1034
  _LIBCPP_HIDE_FROM_ABI unordered_map& operator=(initializer_list<value_type> __il);
1121
1035
  # endif // _LIBCPP_CXX03_LANG
1122
1036
 
1123
- _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
1037
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
1124
1038
  return allocator_type(__table_.__node_alloc());
1125
1039
  }
1126
1040
 
1127
1041
  [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __table_.size() == 0; }
1128
- _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __table_.size(); }
1129
- _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __table_.max_size(); }
1042
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __table_.size(); }
1043
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __table_.max_size(); }
1130
1044
 
1131
- _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __table_.begin(); }
1132
- _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __table_.end(); }
1133
- _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __table_.begin(); }
1134
- _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __table_.end(); }
1135
- _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return __table_.begin(); }
1136
- _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return __table_.end(); }
1045
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __table_.begin(); }
1046
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __table_.end(); }
1047
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __table_.begin(); }
1048
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __table_.end(); }
1049
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return __table_.begin(); }
1050
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return __table_.end(); }
1137
1051
 
1138
1052
  _LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(const value_type& __x) { return __table_.__emplace_unique(__x); }
1139
1053
 
@@ -1187,14 +1101,13 @@ public:
1187
1101
  # if _LIBCPP_STD_VER >= 17
1188
1102
  template <class... _Args>
1189
1103
  _LIBCPP_HIDE_FROM_ABI pair<iterator, bool> try_emplace(const key_type& __k, _Args&&... __args) {
1190
- return __table_.__emplace_unique_key_args(
1191
- __k, piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple(std::forward<_Args>(__args)...));
1104
+ return __table_.__emplace_unique(
1105
+ piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple(std::forward<_Args>(__args)...));
1192
1106
  }
1193
1107
 
1194
1108
  template <class... _Args>
1195
1109
  _LIBCPP_HIDE_FROM_ABI pair<iterator, bool> try_emplace(key_type&& __k, _Args&&... __args) {
1196
- return __table_.__emplace_unique_key_args(
1197
- __k,
1110
+ return __table_.__emplace_unique(
1198
1111
  piecewise_construct,
1199
1112
  std::forward_as_tuple(std::move(__k)),
1200
1113
  std::forward_as_tuple(std::forward<_Args>(__args)...));
@@ -1212,7 +1125,7 @@ public:
1212
1125
 
1213
1126
  template <class _Vp>
1214
1127
  _LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(const key_type& __k, _Vp&& __v) {
1215
- pair<iterator, bool> __res = __table_.__emplace_unique_key_args(__k, __k, std::forward<_Vp>(__v));
1128
+ pair<iterator, bool> __res = __table_.__emplace_unique(__k, std::forward<_Vp>(__v));
1216
1129
  if (!__res.second) {
1217
1130
  __res.first->second = std::forward<_Vp>(__v);
1218
1131
  }
@@ -1221,7 +1134,7 @@ public:
1221
1134
 
1222
1135
  template <class _Vp>
1223
1136
  _LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(key_type&& __k, _Vp&& __v) {
1224
- pair<iterator, bool> __res = __table_.__emplace_unique_key_args(__k, std::move(__k), std::forward<_Vp>(__v));
1137
+ pair<iterator, bool> __res = __table_.__emplace_unique(std::move(__k), std::forward<_Vp>(__v));
1225
1138
  if (!__res.second) {
1226
1139
  __res.first->second = std::forward<_Vp>(__v);
1227
1140
  }
@@ -1258,10 +1171,10 @@ public:
1258
1171
  "node_type with incompatible allocator passed to unordered_map::insert()");
1259
1172
  return __table_.template __node_handle_insert_unique<node_type>(__hint.__i_, std::move(__nh));
1260
1173
  }
1261
- _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
1174
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
1262
1175
  return __table_.template __node_handle_extract<node_type>(__key);
1263
1176
  }
1264
- _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
1177
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
1265
1178
  return __table_.template __node_handle_extract<node_type>(__it.__i_);
1266
1179
  }
1267
1180
 
@@ -1295,52 +1208,56 @@ public:
1295
1208
  __table_.swap(__u.__table_);
1296
1209
  }
1297
1210
 
1298
- _LIBCPP_HIDE_FROM_ABI hasher hash_function() const { return __table_.hash_function().hash_function(); }
1299
- _LIBCPP_HIDE_FROM_ABI key_equal key_eq() const { return __table_.key_eq().key_eq(); }
1211
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI hasher hash_function() const {
1212
+ return __table_.hash_function().hash_function();
1213
+ }
1214
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_equal key_eq() const { return __table_.key_eq().key_eq(); }
1300
1215
 
1301
- _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __table_.find(__k); }
1302
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __table_.find(__k); }
1216
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __table_.find(__k); }
1217
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __table_.find(__k); }
1303
1218
  # if _LIBCPP_STD_VER >= 20
1304
1219
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1305
- _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
1220
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
1306
1221
  return __table_.find(__k);
1307
1222
  }
1308
1223
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1309
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
1224
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
1310
1225
  return __table_.find(__k);
1311
1226
  }
1312
1227
  # endif // _LIBCPP_STD_VER >= 20
1313
1228
 
1314
- _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const { return __table_.__count_unique(__k); }
1229
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
1230
+ return __table_.__count_unique(__k);
1231
+ }
1315
1232
  # if _LIBCPP_STD_VER >= 20
1316
1233
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1317
- _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
1234
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
1318
1235
  return __table_.__count_unique(__k);
1319
1236
  }
1320
1237
  # endif // _LIBCPP_STD_VER >= 20
1321
1238
 
1322
1239
  # if _LIBCPP_STD_VER >= 20
1323
- _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
1240
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
1324
1241
 
1325
1242
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1326
- _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
1243
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
1327
1244
  return find(__k) != end();
1328
1245
  }
1329
1246
  # endif // _LIBCPP_STD_VER >= 20
1330
1247
 
1331
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
1248
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
1332
1249
  return __table_.__equal_range_unique(__k);
1333
1250
  }
1334
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
1251
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
1335
1252
  return __table_.__equal_range_unique(__k);
1336
1253
  }
1337
1254
  # if _LIBCPP_STD_VER >= 20
1338
1255
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1339
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
1256
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
1340
1257
  return __table_.__equal_range_unique(__k);
1341
1258
  }
1342
1259
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
1343
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
1260
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
1344
1261
  return __table_.__equal_range_unique(__k);
1345
1262
  }
1346
1263
  # endif // _LIBCPP_STD_VER >= 20
@@ -1350,24 +1267,32 @@ public:
1350
1267
  _LIBCPP_HIDE_FROM_ABI mapped_type& operator[](key_type&& __k);
1351
1268
  # endif
1352
1269
 
1353
- _LIBCPP_HIDE_FROM_ABI mapped_type& at(const key_type& __k);
1354
- _LIBCPP_HIDE_FROM_ABI const mapped_type& at(const key_type& __k) const;
1270
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI mapped_type& at(const key_type& __k);
1271
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const mapped_type& at(const key_type& __k) const;
1355
1272
 
1356
- _LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __table_.bucket_count(); }
1357
- _LIBCPP_HIDE_FROM_ABI size_type max_bucket_count() const _NOEXCEPT { return __table_.max_bucket_count(); }
1273
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __table_.bucket_count(); }
1274
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_bucket_count() const _NOEXCEPT {
1275
+ return __table_.max_bucket_count();
1276
+ }
1358
1277
 
1359
- _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const { return __table_.bucket_size(__n); }
1360
- _LIBCPP_HIDE_FROM_ABI size_type bucket(const key_type& __k) const { return __table_.bucket(__k); }
1278
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const {
1279
+ return __table_.bucket_size(__n);
1280
+ }
1281
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket(const key_type& __k) const { return __table_.bucket(__k); }
1361
1282
 
1362
- _LIBCPP_HIDE_FROM_ABI local_iterator begin(size_type __n) { return __table_.begin(__n); }
1363
- _LIBCPP_HIDE_FROM_ABI local_iterator end(size_type __n) { return __table_.end(__n); }
1364
- _LIBCPP_HIDE_FROM_ABI const_local_iterator begin(size_type __n) const { return __table_.cbegin(__n); }
1365
- _LIBCPP_HIDE_FROM_ABI const_local_iterator end(size_type __n) const { return __table_.cend(__n); }
1366
- _LIBCPP_HIDE_FROM_ABI const_local_iterator cbegin(size_type __n) const { return __table_.cbegin(__n); }
1367
- _LIBCPP_HIDE_FROM_ABI const_local_iterator cend(size_type __n) const { return __table_.cend(__n); }
1283
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI local_iterator begin(size_type __n) { return __table_.begin(__n); }
1284
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI local_iterator end(size_type __n) { return __table_.end(__n); }
1285
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator begin(size_type __n) const {
1286
+ return __table_.cbegin(__n);
1287
+ }
1288
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator end(size_type __n) const { return __table_.cend(__n); }
1289
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator cbegin(size_type __n) const {
1290
+ return __table_.cbegin(__n);
1291
+ }
1292
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator cend(size_type __n) const { return __table_.cend(__n); }
1368
1293
 
1369
- _LIBCPP_HIDE_FROM_ABI float load_factor() const _NOEXCEPT { return __table_.load_factor(); }
1370
- _LIBCPP_HIDE_FROM_ABI float max_load_factor() const _NOEXCEPT { return __table_.max_load_factor(); }
1294
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI float load_factor() const _NOEXCEPT { return __table_.load_factor(); }
1295
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI float max_load_factor() const _NOEXCEPT { return __table_.max_load_factor(); }
1371
1296
  _LIBCPP_HIDE_FROM_ABI void max_load_factor(float __mlf) { __table_.max_load_factor(__mlf); }
1372
1297
  _LIBCPP_HIDE_FROM_ABI void rehash(size_type __n) { __table_.__rehash_unique(__n); }
1373
1298
  _LIBCPP_HIDE_FROM_ABI void reserve(size_type __n) { __table_.__reserve_unique(__n); }
@@ -1384,10 +1309,10 @@ template <class _InputIterator,
1384
1309
  class _Pred = equal_to<__iter_key_type<_InputIterator>>,
1385
1310
  class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
1386
1311
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
1387
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1312
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1388
1313
  class = enable_if_t<!is_integral<_Hash>::value>,
1389
- class = enable_if_t<!__is_allocator<_Pred>::value>,
1390
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1314
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
1315
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1391
1316
  unordered_map(_InputIterator,
1392
1317
  _InputIterator,
1393
1318
  typename allocator_traits<_Allocator>::size_type = 0,
@@ -1401,10 +1326,10 @@ template <ranges::input_range _Range,
1401
1326
  class _Hash = hash<__range_key_type<_Range>>,
1402
1327
  class _Pred = equal_to<__range_key_type<_Range>>,
1403
1328
  class _Allocator = allocator<__range_to_alloc_type<_Range>>,
1404
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1329
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1405
1330
  class = enable_if_t<!is_integral<_Hash>::value>,
1406
- class = enable_if_t<!__is_allocator<_Pred>::value>,
1407
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1331
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
1332
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1408
1333
  unordered_map(from_range_t,
1409
1334
  _Range&&,
1410
1335
  typename allocator_traits<_Allocator>::size_type = 0,
@@ -1419,10 +1344,10 @@ template <class _Key,
1419
1344
  class _Hash = hash<remove_const_t<_Key>>,
1420
1345
  class _Pred = equal_to<remove_const_t<_Key>>,
1421
1346
  class _Allocator = allocator<pair<const _Key, _Tp>>,
1422
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1347
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1423
1348
  class = enable_if_t<!is_integral<_Hash>::value>,
1424
- class = enable_if_t<!__is_allocator<_Pred>::value>,
1425
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1349
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
1350
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1426
1351
  unordered_map(initializer_list<pair<_Key, _Tp>>,
1427
1352
  typename allocator_traits<_Allocator>::size_type = 0,
1428
1353
  _Hash = _Hash(),
@@ -1432,7 +1357,7 @@ unordered_map(initializer_list<pair<_Key, _Tp>>,
1432
1357
  template <class _InputIterator,
1433
1358
  class _Allocator,
1434
1359
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
1435
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1360
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1436
1361
  unordered_map(_InputIterator, _InputIterator, typename allocator_traits<_Allocator>::size_type, _Allocator)
1437
1362
  -> unordered_map<__iter_key_type<_InputIterator>,
1438
1363
  __iter_mapped_type<_InputIterator>,
@@ -1443,7 +1368,7 @@ unordered_map(_InputIterator, _InputIterator, typename allocator_traits<_Allocat
1443
1368
  template <class _InputIterator,
1444
1369
  class _Allocator,
1445
1370
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
1446
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1371
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1447
1372
  unordered_map(_InputIterator, _InputIterator, _Allocator)
1448
1373
  -> unordered_map<__iter_key_type<_InputIterator>,
1449
1374
  __iter_mapped_type<_InputIterator>,
@@ -1455,9 +1380,9 @@ template <class _InputIterator,
1455
1380
  class _Hash,
1456
1381
  class _Allocator,
1457
1382
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
1458
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1383
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1459
1384
  class = enable_if_t<!is_integral<_Hash>::value>,
1460
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1385
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1461
1386
  unordered_map(_InputIterator, _InputIterator, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
1462
1387
  -> unordered_map<__iter_key_type<_InputIterator>,
1463
1388
  __iter_mapped_type<_InputIterator>,
@@ -1467,7 +1392,7 @@ unordered_map(_InputIterator, _InputIterator, typename allocator_traits<_Allocat
1467
1392
 
1468
1393
  # if _LIBCPP_STD_VER >= 23
1469
1394
 
1470
- template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
1395
+ template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
1471
1396
  unordered_map(from_range_t, _Range&&, typename allocator_traits<_Allocator>::size_type, _Allocator)
1472
1397
  -> unordered_map<__range_key_type<_Range>,
1473
1398
  __range_mapped_type<_Range>,
@@ -1475,7 +1400,7 @@ unordered_map(from_range_t, _Range&&, typename allocator_traits<_Allocator>::siz
1475
1400
  equal_to<__range_key_type<_Range>>,
1476
1401
  _Allocator>;
1477
1402
 
1478
- template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
1403
+ template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
1479
1404
  unordered_map(from_range_t, _Range&&, _Allocator)
1480
1405
  -> unordered_map<__range_key_type<_Range>,
1481
1406
  __range_mapped_type<_Range>,
@@ -1486,9 +1411,9 @@ unordered_map(from_range_t, _Range&&, _Allocator)
1486
1411
  template <ranges::input_range _Range,
1487
1412
  class _Hash,
1488
1413
  class _Allocator,
1489
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1414
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1490
1415
  class = enable_if_t<!is_integral<_Hash>::value>,
1491
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1416
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1492
1417
  unordered_map(from_range_t, _Range&&, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
1493
1418
  -> unordered_map<__range_key_type<_Range>,
1494
1419
  __range_mapped_type<_Range>,
@@ -1498,11 +1423,11 @@ unordered_map(from_range_t, _Range&&, typename allocator_traits<_Allocator>::siz
1498
1423
 
1499
1424
  # endif
1500
1425
 
1501
- template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
1426
+ template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
1502
1427
  unordered_map(initializer_list<pair<_Key, _Tp>>, typename allocator_traits<_Allocator>::size_type, _Allocator)
1503
1428
  -> unordered_map<remove_const_t<_Key>, _Tp, hash<remove_const_t<_Key>>, equal_to<remove_const_t<_Key>>, _Allocator>;
1504
1429
 
1505
- template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
1430
+ template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
1506
1431
  unordered_map(initializer_list<pair<_Key, _Tp>>, _Allocator)
1507
1432
  -> unordered_map<remove_const_t<_Key>, _Tp, hash<remove_const_t<_Key>>, equal_to<remove_const_t<_Key>>, _Allocator>;
1508
1433
 
@@ -1510,9 +1435,9 @@ template <class _Key,
1510
1435
  class _Tp,
1511
1436
  class _Hash,
1512
1437
  class _Allocator,
1513
- class = enable_if_t<!__is_allocator<_Hash>::value>,
1438
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
1514
1439
  class = enable_if_t<!is_integral<_Hash>::value>,
1515
- class = enable_if_t<__is_allocator<_Allocator>::value>>
1440
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
1516
1441
  unordered_map(initializer_list<pair<_Key, _Tp>>, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
1517
1442
  -> unordered_map<remove_const_t<_Key>, _Tp, _Hash, equal_to<remove_const_t<_Key>>, _Allocator>;
1518
1443
  # endif
@@ -1563,12 +1488,6 @@ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1563
1488
  insert(__first, __last);
1564
1489
  }
1565
1490
 
1566
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1567
- unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(const unordered_map& __u) : __table_(__u.__table_) {
1568
- __table_.__rehash_unique(__u.bucket_count());
1569
- insert(__u.begin(), __u.end());
1570
- }
1571
-
1572
1491
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1573
1492
  unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(const unordered_map& __u, const allocator_type& __a)
1574
1493
  : __table_(__u.__table_, typename __table::allocator_type(__a)) {
@@ -1578,11 +1497,6 @@ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(const unordered_ma
1578
1497
 
1579
1498
  # ifndef _LIBCPP_CXX03_LANG
1580
1499
 
1581
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1582
- inline unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(unordered_map&& __u)
1583
- _NOEXCEPT_(is_nothrow_move_constructible<__table>::value)
1584
- : __table_(std::move(__u.__table_)) {}
1585
-
1586
1500
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1587
1501
  unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(unordered_map&& __u, const allocator_type& __a)
1588
1502
  : __table_(std::move(__u.__table_), typename __table::allocator_type(__a)) {
@@ -1618,14 +1532,6 @@ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1618
1532
  insert(__il.begin(), __il.end());
1619
1533
  }
1620
1534
 
1621
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1622
- inline unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>&
1623
- unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(unordered_map&& __u)
1624
- _NOEXCEPT_(is_nothrow_move_assignable<__table>::value) {
1625
- __table_ = std::move(__u.__table_);
1626
- return *this;
1627
- }
1628
-
1629
1535
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1630
1536
  inline unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>&
1631
1537
  unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(initializer_list<value_type> __il) {
@@ -1646,16 +1552,13 @@ inline void unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterato
1646
1552
 
1647
1553
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1648
1554
  _Tp& unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](const key_type& __k) {
1649
- return __table_
1650
- .__emplace_unique_key_args(__k, piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple())
1555
+ return __table_.__emplace_unique(piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple())
1651
1556
  .first->second;
1652
1557
  }
1653
1558
 
1654
1559
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1655
1560
  _Tp& unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](key_type&& __k) {
1656
- return __table_
1657
- .__emplace_unique_key_args(
1658
- __k, piecewise_construct, std::forward_as_tuple(std::move(__k)), std::forward_as_tuple())
1561
+ return __table_.__emplace_unique(piecewise_construct, std::forward_as_tuple(std::move(__k)), std::forward_as_tuple())
1659
1562
  .first->second;
1660
1563
  }
1661
1564
  # else // _LIBCPP_CXX03_LANG
@@ -1781,12 +1684,8 @@ private:
1781
1684
 
1782
1685
  __table __table_;
1783
1686
 
1784
- typedef typename __table::_NodeTypes _NodeTypes;
1785
1687
  typedef typename __table::__node_traits __node_traits;
1786
- typedef typename __table::__node_allocator __node_allocator;
1787
1688
  typedef typename __table::__node __node;
1788
- typedef __hash_map_node_destructor<__node_allocator> _Dp;
1789
- typedef unique_ptr<__node, _Dp> __node_holder;
1790
1689
  typedef allocator_traits<allocator_type> __alloc_traits;
1791
1690
  static_assert(is_same<typename __node_traits::size_type, typename __alloc_traits::size_type>::value,
1792
1691
  "Allocator uses different size_type for different types");
@@ -1852,11 +1751,10 @@ public:
1852
1751
  # endif
1853
1752
 
1854
1753
  _LIBCPP_HIDE_FROM_ABI explicit unordered_multimap(const allocator_type& __a);
1855
- _LIBCPP_HIDE_FROM_ABI unordered_multimap(const unordered_multimap& __u);
1754
+ _LIBCPP_HIDE_FROM_ABI unordered_multimap(const unordered_multimap& __u) = default;
1856
1755
  _LIBCPP_HIDE_FROM_ABI unordered_multimap(const unordered_multimap& __u, const allocator_type& __a);
1857
1756
  # ifndef _LIBCPP_CXX03_LANG
1858
- _LIBCPP_HIDE_FROM_ABI unordered_multimap(unordered_multimap&& __u)
1859
- _NOEXCEPT_(is_nothrow_move_constructible<__table>::value);
1757
+ _LIBCPP_HIDE_FROM_ABI unordered_multimap(unordered_multimap&& __u) = default;
1860
1758
  _LIBCPP_HIDE_FROM_ABI unordered_multimap(unordered_multimap&& __u, const allocator_type& __a);
1861
1759
  _LIBCPP_HIDE_FROM_ABI unordered_multimap(initializer_list<value_type> __il);
1862
1760
  _LIBCPP_HIDE_FROM_ABI unordered_multimap(
@@ -1906,41 +1804,26 @@ public:
1906
1804
  static_assert(sizeof(std::__diagnose_unordered_container_requirements<_Key, _Hash, _Pred>(0)), "");
1907
1805
  }
1908
1806
 
1909
- _LIBCPP_HIDE_FROM_ABI unordered_multimap& operator=(const unordered_multimap& __u) {
1910
- # ifndef _LIBCPP_CXX03_LANG
1911
- __table_ = __u.__table_;
1912
- # else
1913
- if (this != std::addressof(__u)) {
1914
- __table_.clear();
1915
- __table_.hash_function() = __u.__table_.hash_function();
1916
- __table_.key_eq() = __u.__table_.key_eq();
1917
- __table_.max_load_factor() = __u.__table_.max_load_factor();
1918
- __table_.__copy_assign_alloc(__u.__table_);
1919
- insert(__u.begin(), __u.end());
1920
- }
1921
- # endif
1922
- return *this;
1923
- }
1807
+ _LIBCPP_HIDE_FROM_ABI unordered_multimap& operator=(const unordered_multimap& __u) = default;
1924
1808
  # ifndef _LIBCPP_CXX03_LANG
1925
- _LIBCPP_HIDE_FROM_ABI unordered_multimap& operator=(unordered_multimap&& __u)
1926
- _NOEXCEPT_(is_nothrow_move_assignable<__table>::value);
1809
+ _LIBCPP_HIDE_FROM_ABI unordered_multimap& operator=(unordered_multimap&& __u) = default;
1927
1810
  _LIBCPP_HIDE_FROM_ABI unordered_multimap& operator=(initializer_list<value_type> __il);
1928
1811
  # endif // _LIBCPP_CXX03_LANG
1929
1812
 
1930
- _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
1813
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
1931
1814
  return allocator_type(__table_.__node_alloc());
1932
1815
  }
1933
1816
 
1934
1817
  [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __table_.size() == 0; }
1935
- _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __table_.size(); }
1936
- _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __table_.max_size(); }
1818
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __table_.size(); }
1819
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __table_.max_size(); }
1937
1820
 
1938
- _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __table_.begin(); }
1939
- _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __table_.end(); }
1940
- _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __table_.begin(); }
1941
- _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __table_.end(); }
1942
- _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return __table_.begin(); }
1943
- _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return __table_.end(); }
1821
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __table_.begin(); }
1822
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __table_.end(); }
1823
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __table_.begin(); }
1824
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __table_.end(); }
1825
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return __table_.begin(); }
1826
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return __table_.end(); }
1944
1827
 
1945
1828
  _LIBCPP_HIDE_FROM_ABI iterator insert(const value_type& __x) { return __table_.__emplace_multi(__x); }
1946
1829
 
@@ -2008,10 +1891,10 @@ public:
2008
1891
  "node_type with incompatible allocator passed to unordered_multimap::insert()");
2009
1892
  return __table_.template __node_handle_insert_multi<node_type>(__hint.__i_, std::move(__nh));
2010
1893
  }
2011
- _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
1894
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
2012
1895
  return __table_.template __node_handle_extract<node_type>(__key);
2013
1896
  }
2014
- _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
1897
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
2015
1898
  return __table_.template __node_handle_extract<node_type>(__it.__i_);
2016
1899
  }
2017
1900
 
@@ -2045,71 +1928,83 @@ public:
2045
1928
  __table_.swap(__u.__table_);
2046
1929
  }
2047
1930
 
2048
- _LIBCPP_HIDE_FROM_ABI hasher hash_function() const { return __table_.hash_function().hash_function(); }
2049
- _LIBCPP_HIDE_FROM_ABI key_equal key_eq() const { return __table_.key_eq().key_eq(); }
1931
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI hasher hash_function() const {
1932
+ return __table_.hash_function().hash_function();
1933
+ }
1934
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_equal key_eq() const { return __table_.key_eq().key_eq(); }
2050
1935
 
2051
- _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __table_.find(__k); }
2052
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __table_.find(__k); }
1936
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __table_.find(__k); }
1937
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __table_.find(__k); }
2053
1938
  # if _LIBCPP_STD_VER >= 20
2054
1939
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2055
- _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
1940
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
2056
1941
  return __table_.find(__k);
2057
1942
  }
2058
1943
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2059
- _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
1944
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
2060
1945
  return __table_.find(__k);
2061
1946
  }
2062
1947
  # endif // _LIBCPP_STD_VER >= 20
2063
1948
 
2064
- _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const { return __table_.__count_multi(__k); }
1949
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
1950
+ return __table_.__count_multi(__k);
1951
+ }
2065
1952
  # if _LIBCPP_STD_VER >= 20
2066
1953
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2067
- _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
1954
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
2068
1955
  return __table_.__count_multi(__k);
2069
1956
  }
2070
1957
  # endif // _LIBCPP_STD_VER >= 20
2071
1958
 
2072
1959
  # if _LIBCPP_STD_VER >= 20
2073
- _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
1960
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
2074
1961
 
2075
1962
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2076
- _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
1963
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
2077
1964
  return find(__k) != end();
2078
1965
  }
2079
1966
  # endif // _LIBCPP_STD_VER >= 20
2080
1967
 
2081
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
1968
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
2082
1969
  return __table_.__equal_range_multi(__k);
2083
1970
  }
2084
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
1971
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
2085
1972
  return __table_.__equal_range_multi(__k);
2086
1973
  }
2087
1974
  # if _LIBCPP_STD_VER >= 20
2088
1975
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2089
- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
1976
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
2090
1977
  return __table_.__equal_range_multi(__k);
2091
1978
  }
2092
1979
  template <class _K2, enable_if_t<__is_transparent_v<hasher, _K2> && __is_transparent_v<key_equal, _K2>>* = nullptr>
2093
- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
1980
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
2094
1981
  return __table_.__equal_range_multi(__k);
2095
1982
  }
2096
1983
  # endif // _LIBCPP_STD_VER >= 20
2097
1984
 
2098
- _LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __table_.bucket_count(); }
2099
- _LIBCPP_HIDE_FROM_ABI size_type max_bucket_count() const _NOEXCEPT { return __table_.max_bucket_count(); }
1985
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __table_.bucket_count(); }
1986
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_bucket_count() const _NOEXCEPT {
1987
+ return __table_.max_bucket_count();
1988
+ }
2100
1989
 
2101
- _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const { return __table_.bucket_size(__n); }
2102
- _LIBCPP_HIDE_FROM_ABI size_type bucket(const key_type& __k) const { return __table_.bucket(__k); }
1990
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const {
1991
+ return __table_.bucket_size(__n);
1992
+ }
1993
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type bucket(const key_type& __k) const { return __table_.bucket(__k); }
2103
1994
 
2104
- _LIBCPP_HIDE_FROM_ABI local_iterator begin(size_type __n) { return __table_.begin(__n); }
2105
- _LIBCPP_HIDE_FROM_ABI local_iterator end(size_type __n) { return __table_.end(__n); }
2106
- _LIBCPP_HIDE_FROM_ABI const_local_iterator begin(size_type __n) const { return __table_.cbegin(__n); }
2107
- _LIBCPP_HIDE_FROM_ABI const_local_iterator end(size_type __n) const { return __table_.cend(__n); }
2108
- _LIBCPP_HIDE_FROM_ABI const_local_iterator cbegin(size_type __n) const { return __table_.cbegin(__n); }
2109
- _LIBCPP_HIDE_FROM_ABI const_local_iterator cend(size_type __n) const { return __table_.cend(__n); }
1995
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI local_iterator begin(size_type __n) { return __table_.begin(__n); }
1996
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI local_iterator end(size_type __n) { return __table_.end(__n); }
1997
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator begin(size_type __n) const {
1998
+ return __table_.cbegin(__n);
1999
+ }
2000
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator end(size_type __n) const { return __table_.cend(__n); }
2001
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator cbegin(size_type __n) const {
2002
+ return __table_.cbegin(__n);
2003
+ }
2004
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_local_iterator cend(size_type __n) const { return __table_.cend(__n); }
2110
2005
 
2111
- _LIBCPP_HIDE_FROM_ABI float load_factor() const _NOEXCEPT { return __table_.load_factor(); }
2112
- _LIBCPP_HIDE_FROM_ABI float max_load_factor() const _NOEXCEPT { return __table_.max_load_factor(); }
2006
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI float load_factor() const _NOEXCEPT { return __table_.load_factor(); }
2007
+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI float max_load_factor() const _NOEXCEPT { return __table_.max_load_factor(); }
2113
2008
  _LIBCPP_HIDE_FROM_ABI void max_load_factor(float __mlf) { __table_.max_load_factor(__mlf); }
2114
2009
  _LIBCPP_HIDE_FROM_ABI void rehash(size_type __n) { __table_.__rehash_multi(__n); }
2115
2010
  _LIBCPP_HIDE_FROM_ABI void reserve(size_type __n) { __table_.__reserve_multi(__n); }
@@ -2121,10 +2016,10 @@ template <class _InputIterator,
2121
2016
  class _Pred = equal_to<__iter_key_type<_InputIterator>>,
2122
2017
  class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
2123
2018
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
2124
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2019
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2125
2020
  class = enable_if_t<!is_integral<_Hash>::value>,
2126
- class = enable_if_t<!__is_allocator<_Pred>::value>,
2127
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2021
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
2022
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2128
2023
  unordered_multimap(_InputIterator,
2129
2024
  _InputIterator,
2130
2025
  typename allocator_traits<_Allocator>::size_type = 0,
@@ -2142,10 +2037,10 @@ template <ranges::input_range _Range,
2142
2037
  class _Hash = hash<__range_key_type<_Range>>,
2143
2038
  class _Pred = equal_to<__range_key_type<_Range>>,
2144
2039
  class _Allocator = allocator<__range_to_alloc_type<_Range>>,
2145
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2040
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2146
2041
  class = enable_if_t<!is_integral<_Hash>::value>,
2147
- class = enable_if_t<!__is_allocator<_Pred>::value>,
2148
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2042
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
2043
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2149
2044
  unordered_multimap(from_range_t,
2150
2045
  _Range&&,
2151
2046
  typename allocator_traits<_Allocator>::size_type = 0,
@@ -2160,21 +2055,21 @@ template <class _Key,
2160
2055
  class _Hash = hash<remove_const_t<_Key>>,
2161
2056
  class _Pred = equal_to<remove_const_t<_Key>>,
2162
2057
  class _Allocator = allocator<pair<const _Key, _Tp>>,
2163
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2058
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2164
2059
  class = enable_if_t<!is_integral<_Hash>::value>,
2165
- class = enable_if_t<!__is_allocator<_Pred>::value>,
2166
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2167
- unordered_multimap(
2168
- initializer_list<pair<_Key, _Tp>>,
2169
- typename allocator_traits<_Allocator>::size_type = 0,
2170
- _Hash = _Hash(),
2171
- _Pred = _Pred(),
2172
- _Allocator = _Allocator()) -> unordered_multimap<remove_const_t<_Key>, _Tp, _Hash, _Pred, _Allocator>;
2060
+ class = enable_if_t<!__is_allocator_v<_Pred>>,
2061
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2062
+ unordered_multimap(initializer_list<pair<_Key, _Tp>>,
2063
+ typename allocator_traits<_Allocator>::size_type = 0,
2064
+ _Hash = _Hash(),
2065
+ _Pred = _Pred(),
2066
+ _Allocator = _Allocator())
2067
+ -> unordered_multimap<remove_const_t<_Key>, _Tp, _Hash, _Pred, _Allocator>;
2173
2068
 
2174
2069
  template <class _InputIterator,
2175
2070
  class _Allocator,
2176
2071
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
2177
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2072
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2178
2073
  unordered_multimap(_InputIterator, _InputIterator, typename allocator_traits<_Allocator>::size_type, _Allocator)
2179
2074
  -> unordered_multimap<__iter_key_type<_InputIterator>,
2180
2075
  __iter_mapped_type<_InputIterator>,
@@ -2185,7 +2080,7 @@ unordered_multimap(_InputIterator, _InputIterator, typename allocator_traits<_Al
2185
2080
  template <class _InputIterator,
2186
2081
  class _Allocator,
2187
2082
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
2188
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2083
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2189
2084
  unordered_multimap(_InputIterator, _InputIterator, _Allocator)
2190
2085
  -> unordered_multimap<__iter_key_type<_InputIterator>,
2191
2086
  __iter_mapped_type<_InputIterator>,
@@ -2197,9 +2092,9 @@ template <class _InputIterator,
2197
2092
  class _Hash,
2198
2093
  class _Allocator,
2199
2094
  class = enable_if_t<__has_input_iterator_category<_InputIterator>::value>,
2200
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2095
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2201
2096
  class = enable_if_t<!is_integral<_Hash>::value>,
2202
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2097
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2203
2098
  unordered_multimap(_InputIterator, _InputIterator, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
2204
2099
  -> unordered_multimap<__iter_key_type<_InputIterator>,
2205
2100
  __iter_mapped_type<_InputIterator>,
@@ -2209,7 +2104,7 @@ unordered_multimap(_InputIterator, _InputIterator, typename allocator_traits<_Al
2209
2104
 
2210
2105
  # if _LIBCPP_STD_VER >= 23
2211
2106
 
2212
- template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
2107
+ template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
2213
2108
  unordered_multimap(from_range_t, _Range&&, typename allocator_traits<_Allocator>::size_type, _Allocator)
2214
2109
  -> unordered_multimap<__range_key_type<_Range>,
2215
2110
  __range_mapped_type<_Range>,
@@ -2217,7 +2112,7 @@ unordered_multimap(from_range_t, _Range&&, typename allocator_traits<_Allocator>
2217
2112
  equal_to<__range_key_type<_Range>>,
2218
2113
  _Allocator>;
2219
2114
 
2220
- template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
2115
+ template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
2221
2116
  unordered_multimap(from_range_t, _Range&&, _Allocator)
2222
2117
  -> unordered_multimap<__range_key_type<_Range>,
2223
2118
  __range_mapped_type<_Range>,
@@ -2228,9 +2123,9 @@ unordered_multimap(from_range_t, _Range&&, _Allocator)
2228
2123
  template <ranges::input_range _Range,
2229
2124
  class _Hash,
2230
2125
  class _Allocator,
2231
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2126
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2232
2127
  class = enable_if_t<!is_integral<_Hash>::value>,
2233
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2128
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2234
2129
  unordered_multimap(from_range_t, _Range&&, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
2235
2130
  -> unordered_multimap<__range_key_type<_Range>,
2236
2131
  __range_mapped_type<_Range>,
@@ -2240,7 +2135,7 @@ unordered_multimap(from_range_t, _Range&&, typename allocator_traits<_Allocator>
2240
2135
 
2241
2136
  # endif
2242
2137
 
2243
- template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
2138
+ template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
2244
2139
  unordered_multimap(initializer_list<pair<_Key, _Tp>>, typename allocator_traits<_Allocator>::size_type, _Allocator)
2245
2140
  -> unordered_multimap<remove_const_t<_Key>,
2246
2141
  _Tp,
@@ -2248,7 +2143,7 @@ unordered_multimap(initializer_list<pair<_Key, _Tp>>, typename allocator_traits<
2248
2143
  equal_to<remove_const_t<_Key>>,
2249
2144
  _Allocator>;
2250
2145
 
2251
- template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator<_Allocator>::value>>
2146
+ template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
2252
2147
  unordered_multimap(initializer_list<pair<_Key, _Tp>>, _Allocator)
2253
2148
  -> unordered_multimap<remove_const_t<_Key>,
2254
2149
  _Tp,
@@ -2260,9 +2155,9 @@ template <class _Key,
2260
2155
  class _Tp,
2261
2156
  class _Hash,
2262
2157
  class _Allocator,
2263
- class = enable_if_t<!__is_allocator<_Hash>::value>,
2158
+ class = enable_if_t<!__is_allocator_v<_Hash>>,
2264
2159
  class = enable_if_t<!is_integral<_Hash>::value>,
2265
- class = enable_if_t<__is_allocator<_Allocator>::value>>
2160
+ class = enable_if_t<__is_allocator_v<_Allocator>>>
2266
2161
  unordered_multimap(
2267
2162
  initializer_list<pair<_Key, _Tp>>, typename allocator_traits<_Allocator>::size_type, _Hash, _Allocator)
2268
2163
  -> unordered_multimap<remove_const_t<_Key>, _Tp, _Hash, equal_to<remove_const_t<_Key>>, _Allocator>;
@@ -2315,13 +2210,6 @@ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2315
2210
  inline unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(const allocator_type& __a)
2316
2211
  : __table_(typename __table::allocator_type(__a)) {}
2317
2212
 
2318
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2319
- unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(const unordered_multimap& __u)
2320
- : __table_(__u.__table_) {
2321
- __table_.__rehash_multi(__u.bucket_count());
2322
- insert(__u.begin(), __u.end());
2323
- }
2324
-
2325
2213
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2326
2214
  unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
2327
2215
  const unordered_multimap& __u, const allocator_type& __a)
@@ -2332,11 +2220,6 @@ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
2332
2220
 
2333
2221
  # ifndef _LIBCPP_CXX03_LANG
2334
2222
 
2335
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2336
- inline unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(unordered_multimap&& __u)
2337
- _NOEXCEPT_(is_nothrow_move_constructible<__table>::value)
2338
- : __table_(std::move(__u.__table_)) {}
2339
-
2340
2223
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2341
2224
  unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
2342
2225
  unordered_multimap&& __u, const allocator_type& __a)
@@ -2373,14 +2256,6 @@ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
2373
2256
  insert(__il.begin(), __il.end());
2374
2257
  }
2375
2258
 
2376
- template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2377
- inline unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>&
2378
- unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(unordered_multimap&& __u)
2379
- _NOEXCEPT_(is_nothrow_move_assignable<__table>::value) {
2380
- __table_ = std::move(__u.__table_);
2381
- return *this;
2382
- }
2383
-
2384
2259
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
2385
2260
  inline unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>&
2386
2261
  unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(initializer_list<value_type> __il) {