re2 1.23.0 → 1.23.2

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 (280) hide show
  1. package/README.md +2 -0
  2. package/binding.gyp +3 -2
  3. package/package.json +5 -5
  4. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
  5. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
  6. package/vendor/abseil-cpp/CMakeLists.txt +2 -2
  7. package/vendor/abseil-cpp/MODULE.bazel +2 -2
  8. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
  9. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
  10. package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
  11. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
  12. package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
  13. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
  14. package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
  15. package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
  16. package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
  17. package/vendor/abseil-cpp/absl/base/casts.h +128 -2
  18. package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
  19. package/vendor/abseil-cpp/absl/base/config.h +13 -37
  20. package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  21. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
  22. package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
  23. package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
  24. package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  25. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
  26. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
  27. package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
  28. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
  29. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
  30. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
  31. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  32. package/vendor/abseil-cpp/absl/base/macros.h +40 -17
  33. package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
  34. package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
  35. package/vendor/abseil-cpp/absl/base/options.h +1 -27
  36. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
  37. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
  38. package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
  39. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
  40. package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
  41. package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
  42. package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
  43. package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
  44. package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
  45. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
  46. package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
  47. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
  48. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
  49. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
  50. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
  51. package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
  52. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
  53. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
  54. package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
  55. package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
  56. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
  57. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
  58. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
  59. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
  60. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
  61. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
  62. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
  63. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
  64. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
  65. package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
  66. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
  67. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
  68. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
  69. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
  70. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
  71. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
  72. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
  73. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
  74. package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
  75. package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
  76. package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
  77. package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
  78. package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
  79. package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
  80. package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
  81. package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
  82. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
  83. package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
  84. package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
  85. package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
  86. package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
  87. package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
  88. package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
  89. package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
  90. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
  91. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
  92. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
  93. package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
  94. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
  95. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  96. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
  97. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
  98. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
  99. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
  100. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
  101. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
  102. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  103. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  104. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
  105. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
  106. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
  107. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
  108. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  109. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
  110. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  111. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
  112. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
  113. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
  114. package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
  115. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
  116. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  117. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
  118. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  119. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
  120. package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
  121. package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
  122. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  123. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
  124. package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
  125. package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
  126. package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
  127. package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
  128. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
  129. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
  130. package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
  131. package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
  132. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
  133. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
  134. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
  135. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
  136. package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
  137. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
  138. package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
  139. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
  140. package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
  141. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
  142. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
  143. package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
  144. package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
  145. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
  146. package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  147. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
  148. package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
  149. package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
  150. package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
  151. package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
  152. package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  153. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
  154. package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
  155. package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
  156. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
  157. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  158. package/vendor/abseil-cpp/absl/log/log.h +2 -2
  159. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
  160. package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
  161. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
  162. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
  163. package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
  164. package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
  165. package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
  166. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
  167. package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
  168. package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  169. package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  170. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
  171. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
  172. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
  173. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
  174. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
  175. package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
  176. package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
  177. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
  178. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
  179. package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
  180. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
  181. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
  182. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
  183. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
  184. package/vendor/abseil-cpp/absl/status/status.cc +4 -0
  185. package/vendor/abseil-cpp/absl/status/status.h +5 -0
  186. package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
  187. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
  188. package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
  189. package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
  190. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
  191. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
  192. package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
  193. package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
  194. package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
  195. package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
  196. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  197. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
  198. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
  199. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
  200. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
  201. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
  202. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
  203. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
  204. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
  205. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
  206. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
  207. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
  208. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  209. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
  210. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
  211. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
  212. package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
  213. package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
  214. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
  215. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
  216. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
  217. package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
  218. package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
  219. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
  220. package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
  221. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
  222. package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
  223. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
  224. package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
  225. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
  226. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
  227. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  228. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
  229. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
  230. package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
  231. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  232. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
  233. package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
  234. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
  235. package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
  236. package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
  237. package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
  238. package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
  239. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
  240. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
  241. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  242. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
  243. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  244. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  245. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  246. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  247. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  248. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  249. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
  250. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
  251. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
  252. package/vendor/abseil-cpp/absl/time/time.cc +4 -4
  253. package/vendor/abseil-cpp/absl/time/time.h +10 -10
  254. package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
  255. package/vendor/abseil-cpp/absl/types/compare.h +62 -61
  256. package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
  257. package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
  258. package/vendor/abseil-cpp/absl/types/optional.h +2 -2
  259. package/vendor/abseil-cpp/absl/types/span.h +10 -2
  260. package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
  261. package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
  262. package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
  263. package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
  264. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
  265. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
  266. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
  267. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
  268. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
  269. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
  270. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
  271. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
  272. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
  273. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
  274. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
  275. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
  276. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
  277. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
  278. package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
  279. package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
  280. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
@@ -308,7 +308,7 @@ cc_library(
308
308
  cc_test(
309
309
  name = "flat_hash_set_test",
310
310
  srcs = ["flat_hash_set_test.cc"],
311
- copts = ABSL_TEST_COPTS + ["-DUNORDERED_SET_CXX17"],
311
+ copts = ABSL_TEST_COPTS,
312
312
  linkopts = ABSL_DEFAULT_LINKOPTS,
313
313
  tags = ["no_test_loonix"],
314
314
  deps = [
@@ -388,7 +388,7 @@ cc_library(
388
388
  cc_test(
389
389
  name = "node_hash_set_test",
390
390
  srcs = ["node_hash_set_test.cc"],
391
- copts = ABSL_TEST_COPTS + ["-DUNORDERED_SET_CXX17"],
391
+ copts = ABSL_TEST_COPTS,
392
392
  linkopts = ABSL_DEFAULT_LINKOPTS,
393
393
  tags = ["no_test_loonix"],
394
394
  deps = [
@@ -429,6 +429,7 @@ cc_test(
429
429
  deps = [
430
430
  ":container_memory",
431
431
  ":test_instance_tracker",
432
+ "//absl/base:config",
432
433
  "//absl/base:no_destructor",
433
434
  "//absl/meta:type_traits",
434
435
  "//absl/strings",
@@ -495,6 +496,7 @@ cc_library(
495
496
  linkopts = ABSL_DEFAULT_LINKOPTS,
496
497
  deps = [
497
498
  ":hash_policy_testing",
499
+ "//absl/base:config",
498
500
  "//absl/base:no_destructor",
499
501
  "//absl/memory",
500
502
  "//absl/meta:type_traits",
@@ -941,9 +943,13 @@ cc_library(
941
943
  hdrs = ["internal/unordered_map_constructor_test.h"],
942
944
  copts = ABSL_TEST_COPTS,
943
945
  linkopts = ABSL_DEFAULT_LINKOPTS,
946
+ visibility = [
947
+ "//absl/container:__pkg__",
948
+ ],
944
949
  deps = [
945
950
  ":hash_generator_testing",
946
951
  ":hash_policy_testing",
952
+ "//absl/base:config",
947
953
  "@googletest//:gtest",
948
954
  ],
949
955
  )
@@ -954,6 +960,9 @@ cc_library(
954
960
  hdrs = ["internal/unordered_map_lookup_test.h"],
955
961
  copts = ABSL_TEST_COPTS,
956
962
  linkopts = ABSL_DEFAULT_LINKOPTS,
963
+ visibility = [
964
+ "//absl/container:__pkg__",
965
+ ],
957
966
  deps = [
958
967
  ":hash_generator_testing",
959
968
  ":hash_policy_testing",
@@ -967,6 +976,9 @@ cc_library(
967
976
  hdrs = ["internal/unordered_map_modifiers_test.h"],
968
977
  copts = ABSL_TEST_COPTS,
969
978
  linkopts = ABSL_DEFAULT_LINKOPTS,
979
+ visibility = [
980
+ "//absl/container:__pkg__",
981
+ ],
970
982
  deps = [
971
983
  ":hash_generator_testing",
972
984
  ":hash_policy_testing",
@@ -980,9 +992,13 @@ cc_library(
980
992
  hdrs = ["internal/unordered_set_constructor_test.h"],
981
993
  copts = ABSL_TEST_COPTS,
982
994
  linkopts = ABSL_DEFAULT_LINKOPTS,
995
+ visibility = [
996
+ "//absl/container:__pkg__",
997
+ ],
983
998
  deps = [
984
999
  ":hash_generator_testing",
985
1000
  ":hash_policy_testing",
1001
+ "//absl/base:config",
986
1002
  "//absl/meta:type_traits",
987
1003
  "@googletest//:gtest",
988
1004
  ],
@@ -994,6 +1010,9 @@ cc_library(
994
1010
  hdrs = ["internal/unordered_set_members_test.h"],
995
1011
  copts = ABSL_TEST_COPTS,
996
1012
  linkopts = ABSL_DEFAULT_LINKOPTS,
1013
+ visibility = [
1014
+ "//absl/container:__pkg__",
1015
+ ],
997
1016
  deps = [
998
1017
  "//absl/meta:type_traits",
999
1018
  "@googletest//:gtest",
@@ -1006,6 +1025,9 @@ cc_library(
1006
1025
  hdrs = ["internal/unordered_map_members_test.h"],
1007
1026
  copts = ABSL_TEST_COPTS,
1008
1027
  linkopts = ABSL_DEFAULT_LINKOPTS,
1028
+ visibility = [
1029
+ "//absl/container:__pkg__",
1030
+ ],
1009
1031
  deps = [
1010
1032
  "//absl/meta:type_traits",
1011
1033
  "@googletest//:gtest",
@@ -1018,6 +1040,9 @@ cc_library(
1018
1040
  hdrs = ["internal/unordered_set_lookup_test.h"],
1019
1041
  copts = ABSL_TEST_COPTS,
1020
1042
  linkopts = ABSL_DEFAULT_LINKOPTS,
1043
+ visibility = [
1044
+ "//absl/container:__pkg__",
1045
+ ],
1021
1046
  deps = [
1022
1047
  ":hash_generator_testing",
1023
1048
  ":hash_policy_testing",
@@ -1031,6 +1056,9 @@ cc_library(
1031
1056
  hdrs = ["internal/unordered_set_modifiers_test.h"],
1032
1057
  copts = ABSL_TEST_COPTS,
1033
1058
  linkopts = ABSL_DEFAULT_LINKOPTS,
1059
+ visibility = [
1060
+ "//absl/container:__pkg__",
1061
+ ],
1034
1062
  deps = [
1035
1063
  ":hash_generator_testing",
1036
1064
  ":hash_policy_testing",
@@ -1199,3 +1227,168 @@ cc_binary(
1199
1227
  "@google_benchmark//:benchmark_main",
1200
1228
  ],
1201
1229
  )
1230
+
1231
+ cc_library(
1232
+ name = "heterogeneous_lookup_testing",
1233
+ testonly = True,
1234
+ hdrs = ["internal/heterogeneous_lookup_testing.h"],
1235
+ copts = ABSL_TEST_COPTS,
1236
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1237
+ visibility = [
1238
+ "//absl/container:__pkg__",
1239
+ ],
1240
+ deps = [
1241
+ "//absl/base:config",
1242
+ "//absl/container:test_instance_tracker",
1243
+ "@googletest//:gtest",
1244
+ ],
1245
+ )
1246
+
1247
+ cc_library(
1248
+ name = "linked_hash_set",
1249
+ hdrs = ["linked_hash_set.h"],
1250
+ copts = ABSL_DEFAULT_COPTS,
1251
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1252
+ deps = [
1253
+ ":common",
1254
+ "//absl/base:config",
1255
+ "//absl/base:core_headers",
1256
+ "//absl/container:flat_hash_set",
1257
+ ],
1258
+ )
1259
+
1260
+ cc_test(
1261
+ name = "linked_hash_set_test",
1262
+ srcs = ["linked_hash_set_test.cc"],
1263
+ copts = ABSL_TEST_COPTS,
1264
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1265
+ deps = [
1266
+ ":heterogeneous_lookup_testing",
1267
+ ":linked_hash_set",
1268
+ "//absl/base:config",
1269
+ "//absl/container:hash_generator_testing",
1270
+ "//absl/container:hash_policy_testing",
1271
+ "//absl/container:test_instance_tracker",
1272
+ "//absl/container:unordered_set_constructor_test",
1273
+ "//absl/container:unordered_set_lookup_test",
1274
+ "//absl/container:unordered_set_members_test",
1275
+ "//absl/container:unordered_set_modifiers_test",
1276
+ "//absl/strings:string_view",
1277
+ "@googletest//:gtest",
1278
+ "@googletest//:gtest_main",
1279
+ ],
1280
+ )
1281
+
1282
+ cc_binary(
1283
+ name = "linked_hash_set_benchmark",
1284
+ testonly = True,
1285
+ srcs = ["linked_hash_set_benchmark.cc"],
1286
+ copts = ABSL_TEST_COPTS,
1287
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1288
+ tags = ["benchmark"],
1289
+ visibility = ["//visibility:private"],
1290
+ deps = [
1291
+ ":linked_hash_set",
1292
+ "//absl/functional:function_ref",
1293
+ "//absl/strings:str_format",
1294
+ "//absl/strings:string_view",
1295
+ "@google_benchmark//:benchmark_main",
1296
+ ],
1297
+ )
1298
+
1299
+ cc_library(
1300
+ name = "linked_hash_map",
1301
+ hdrs = ["linked_hash_map.h"],
1302
+ copts = ABSL_DEFAULT_COPTS,
1303
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1304
+ deps = [
1305
+ ":common",
1306
+ "//absl/base:config",
1307
+ "//absl/base:core_headers",
1308
+ "//absl/base:throw_delegate",
1309
+ "//absl/container:flat_hash_set",
1310
+ ],
1311
+ )
1312
+
1313
+ cc_test(
1314
+ name = "linked_hash_map_test",
1315
+ srcs = ["linked_hash_map_test.cc"],
1316
+ copts = ABSL_TEST_COPTS,
1317
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1318
+ deps = [
1319
+ ":heterogeneous_lookup_testing",
1320
+ ":linked_hash_map",
1321
+ "//absl/base:config",
1322
+ "//absl/base:exception_testing",
1323
+ "//absl/container:hash_generator_testing",
1324
+ "//absl/container:hash_policy_testing",
1325
+ "//absl/container:test_instance_tracker",
1326
+ "//absl/container:unordered_map_constructor_test",
1327
+ "//absl/container:unordered_map_lookup_test",
1328
+ "//absl/container:unordered_map_members_test",
1329
+ "//absl/container:unordered_map_modifiers_test",
1330
+ "//absl/strings:string_view",
1331
+ "@googletest//:gtest",
1332
+ "@googletest//:gtest_main",
1333
+ ],
1334
+ )
1335
+
1336
+ cc_binary(
1337
+ name = "linked_hash_map_benchmark",
1338
+ testonly = True,
1339
+ srcs = ["linked_hash_map_benchmark.cc"],
1340
+ copts = ABSL_TEST_COPTS,
1341
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1342
+ tags = ["benchmark"],
1343
+ visibility = ["//visibility:private"],
1344
+ deps = [
1345
+ ":linked_hash_map",
1346
+ "//absl/functional:function_ref",
1347
+ "//absl/strings:str_format",
1348
+ "//absl/strings:string_view",
1349
+ "@google_benchmark//:benchmark_main",
1350
+ ],
1351
+ )
1352
+
1353
+ cc_library(
1354
+ name = "chunked_queue",
1355
+ srcs = ["internal/chunked_queue.h"],
1356
+ hdrs = ["chunked_queue.h"],
1357
+ deps = [
1358
+ ":layout",
1359
+ "//absl/base:config",
1360
+ "//absl/base:core_headers",
1361
+ "//absl/base:iterator_traits_internal",
1362
+ ],
1363
+ )
1364
+
1365
+ cc_test(
1366
+ name = "chunked_queue_test",
1367
+ size = "small",
1368
+ srcs = ["chunked_queue_test.cc"],
1369
+ deps = [
1370
+ ":chunked_queue",
1371
+ ":test_allocator",
1372
+ "//absl/base:core_headers",
1373
+ "//absl/strings",
1374
+ "@googletest//:gtest",
1375
+ "@googletest//:gtest_main",
1376
+ ],
1377
+ )
1378
+
1379
+ cc_binary(
1380
+ name = "chunked_queue_benchmark",
1381
+ testonly = True,
1382
+ srcs = ["chunked_queue_benchmark.cc"],
1383
+ copts = ABSL_TEST_COPTS,
1384
+ linkopts = ABSL_DEFAULT_LINKOPTS,
1385
+ tags = ["benchmark"],
1386
+ visibility = ["//visibility:private"],
1387
+ deps = [
1388
+ ":chunked_queue",
1389
+ "//absl/random",
1390
+ "//absl/status",
1391
+ "//absl/strings:cord",
1392
+ "@google_benchmark//:benchmark_main",
1393
+ ],
1394
+ )
@@ -349,7 +349,6 @@ absl_cc_test(
349
349
  "flat_hash_set_test.cc"
350
350
  COPTS
351
351
  ${ABSL_TEST_COPTS}
352
- "-DUNORDERED_SET_CXX17"
353
352
  DEPS
354
353
  absl::check
355
354
  absl::config
@@ -432,7 +431,6 @@ absl_cc_test(
432
431
  "node_hash_set_test.cc"
433
432
  COPTS
434
433
  ${ABSL_TEST_COPTS}
435
- "-DUNORDERED_SET_CXX17"
436
434
  DEPS
437
435
  absl::hash_generator_testing
438
436
  absl::hash_policy_testing
@@ -484,6 +482,7 @@ absl_cc_test(
484
482
  COPTS
485
483
  ${ABSL_TEST_COPTS}
486
484
  DEPS
485
+ absl::config
487
486
  absl::container_memory
488
487
  absl::no_destructor
489
488
  absl::strings
@@ -540,6 +539,7 @@ absl_cc_library(
540
539
  COPTS
541
540
  ${ABSL_TEST_COPTS}
542
541
  DEPS
542
+ absl::config
543
543
  absl::hash_policy_testing
544
544
  absl::memory
545
545
  absl::meta
@@ -949,6 +949,7 @@ absl_cc_library(
949
949
  COPTS
950
950
  ${ABSL_TEST_COPTS}
951
951
  DEPS
952
+ absl::config
952
953
  absl::hash_generator_testing
953
954
  absl::hash_policy_testing
954
955
  GTest::gmock
@@ -1008,6 +1009,7 @@ absl_cc_library(
1008
1009
  COPTS
1009
1010
  ${ABSL_TEST_COPTS}
1010
1011
  DEPS
1012
+ absl::config
1011
1013
  absl::hash_generator_testing
1012
1014
  absl::hash_policy_testing
1013
1015
  GTest::gmock
@@ -1103,3 +1105,135 @@ absl_cc_test(
1103
1105
  absl::hashtablez_sampler
1104
1106
  GTest::gmock_main
1105
1107
  )
1108
+
1109
+ absl_cc_library(
1110
+ NAME
1111
+ heterogeneous_lookup_testing
1112
+ HDRS
1113
+ "internal/heterogeneous_lookup_testing.h"
1114
+ COPTS
1115
+ ${ABSL_TEST_COPTS}
1116
+ LINKOPTS
1117
+ ${ABSL_DEFAULT_LINKOPTS}
1118
+ DEPS
1119
+ absl::config
1120
+ absl::test_instance_tracker
1121
+ GTest::gmock
1122
+ )
1123
+
1124
+ absl_cc_library(
1125
+ NAME
1126
+ linked_hash_set
1127
+ HDRS
1128
+ "linked_hash_set.h"
1129
+ COPTS
1130
+ ${ABSL_DEFAULT_COPTS}
1131
+ LINKOPTS
1132
+ ${ABSL_DEFAULT_LINKOPTS}
1133
+ DEPS
1134
+ absl::container_common
1135
+ absl::config
1136
+ absl::core_headers
1137
+ absl::flat_hash_set
1138
+ )
1139
+
1140
+ absl_cc_test(
1141
+ NAME
1142
+ linked_hash_set_test
1143
+ SRCS
1144
+ "linked_hash_set_test.cc"
1145
+ COPTS
1146
+ ${ABSL_TEST_COPTS}
1147
+ LINKOPTS
1148
+ ${ABSL_DEFAULT_LINKOPTS}
1149
+ DEPS
1150
+ absl::linked_hash_set
1151
+ absl::config
1152
+ absl::heterogeneous_lookup_testing
1153
+ absl::hash_generator_testing
1154
+ absl::hash_policy_testing
1155
+ absl::string_view
1156
+ absl::test_instance_tracker
1157
+ absl::unordered_set_constructor_test
1158
+ absl::unordered_set_lookup_test
1159
+ absl::unordered_set_members_test
1160
+ absl::unordered_set_modifiers_test
1161
+ GTest::gmock_main
1162
+ )
1163
+
1164
+ absl_cc_library(
1165
+ NAME
1166
+ linked_hash_map
1167
+ HDRS
1168
+ "linked_hash_map.h"
1169
+ COPTS
1170
+ ${ABSL_DEFAULT_COPTS}
1171
+ LINKOPTS
1172
+ ${ABSL_DEFAULT_LINKOPTS}
1173
+ DEPS
1174
+ absl::container_common
1175
+ absl::config
1176
+ absl::core_headers
1177
+ absl::flat_hash_set
1178
+ absl::throw_delegate
1179
+ )
1180
+
1181
+ absl_cc_test(
1182
+ NAME
1183
+ linked_hash_map_test
1184
+ SRCS
1185
+ "linked_hash_map_test.cc"
1186
+ COPTS
1187
+ ${ABSL_TEST_COPTS}
1188
+ LINKOPTS
1189
+ ${ABSL_DEFAULT_LINKOPTS}
1190
+ DEPS
1191
+ absl::linked_hash_map
1192
+ absl::config
1193
+ absl::exception_testing
1194
+ absl::heterogeneous_lookup_testing
1195
+ absl::hash_generator_testing
1196
+ absl::hash_policy_testing
1197
+ absl::string_view
1198
+ absl::test_instance_tracker
1199
+ absl::unordered_set_constructor_test
1200
+ absl::unordered_set_lookup_test
1201
+ absl::unordered_set_members_test
1202
+ absl::unordered_set_modifiers_test
1203
+ GTest::gmock_main
1204
+ )
1205
+
1206
+ absl_cc_library(
1207
+ NAME
1208
+ chunked_queue
1209
+ HDRS
1210
+ "chunked_queue.h"
1211
+ "internal/chunked_queue.h"
1212
+ COPTS
1213
+ ${ABSL_DEFAULT_COPTS}
1214
+ LINKOPTS
1215
+ ${ABSL_DEFAULT_LINKOPTS}
1216
+ DEPS
1217
+ absl::config
1218
+ absl::core_headers
1219
+ absl::iterator_traits_internal
1220
+ absl::layout
1221
+ )
1222
+
1223
+ absl_cc_test(
1224
+ NAME
1225
+ chunked_queue_test
1226
+ SRCS
1227
+ "chunked_queue_test.cc"
1228
+ COPTS
1229
+ ${ABSL_TEST_COPTS}
1230
+ LINKOPTS
1231
+ ${ABSL_DEFAULT_LINKOPTS}
1232
+ DEPS
1233
+ absl::chunked_queue
1234
+ absl::config
1235
+ absl::core_headers
1236
+ absl::strings
1237
+ absl::test_allocator
1238
+ GTest::gmock_main
1239
+ )
@@ -57,18 +57,44 @@
57
57
  #ifndef ABSL_CONTAINER_BTREE_MAP_H_
58
58
  #define ABSL_CONTAINER_BTREE_MAP_H_
59
59
 
60
+ #include <functional>
61
+ #include <memory>
62
+ #include <type_traits>
63
+ #include <utility>
64
+
60
65
  #include "absl/base/attributes.h"
61
66
  #include "absl/container/internal/btree.h" // IWYU pragma: export
62
67
  #include "absl/container/internal/btree_container.h" // IWYU pragma: export
68
+ #include "absl/container/internal/common.h"
69
+ #include "absl/container/internal/container_memory.h"
63
70
 
64
71
  namespace absl {
65
72
  ABSL_NAMESPACE_BEGIN
66
73
 
67
74
  namespace container_internal {
68
75
 
76
+ template <typename Key, typename Data, typename... Params>
77
+ struct map_params_impl;
78
+
79
+ template <typename Key, typename Data>
80
+ struct btree_map_defaults {
81
+ using Compare = std::less<Key>;
82
+ using Alloc = std::allocator<std::pair<const Key, Data>>;
83
+ using TargetNodeSize = std::integral_constant<int, 256>;
84
+ using IsMulti = std::false_type;
85
+ };
86
+
69
87
  template <typename Key, typename Data, typename Compare, typename Alloc,
70
88
  int TargetNodeSize, bool IsMulti>
71
- struct map_params;
89
+ using map_params = typename ApplyWithoutDefaultSuffix<
90
+ map_params_impl,
91
+ TypeList<void, void, typename btree_map_defaults<Key, Data>::Compare,
92
+ typename btree_map_defaults<Key, Data>::Alloc,
93
+ typename btree_map_defaults<Key, Data>::TargetNodeSize,
94
+ typename btree_map_defaults<Key, Data>::IsMulti>,
95
+ TypeList<Key, Data, Compare, Alloc,
96
+ std::integral_constant<int, TargetNodeSize>,
97
+ std::integral_constant<bool, IsMulti>>>::type;
72
98
 
73
99
  } // namespace container_internal
74
100
 
@@ -855,11 +881,20 @@ namespace container_internal {
855
881
 
856
882
  // A parameters structure for holding the type parameters for a btree_map.
857
883
  // Compare and Alloc should be nothrow copy-constructible.
858
- template <typename Key, typename Data, typename Compare, typename Alloc,
859
- int TargetNodeSize, bool IsMulti>
860
- struct map_params : common_params<Key, Compare, Alloc, TargetNodeSize, IsMulti,
861
- /*IsMap=*/true, map_slot_policy<Key, Data>> {
862
- using super_type = typename map_params::common_params;
884
+ template <typename Key, typename Data, typename... Params>
885
+ struct map_params_impl
886
+ : common_params<
887
+ Key,
888
+ GetFromListOr<typename btree_map_defaults<Key, Data>::Compare, 0,
889
+ Params...>,
890
+ GetFromListOr<typename btree_map_defaults<Key, Data>::Alloc, 1,
891
+ Params...>,
892
+ GetFromListOr<typename btree_map_defaults<Key, Data>::TargetNodeSize,
893
+ 2, Params...>::value,
894
+ GetFromListOr<typename btree_map_defaults<Key, Data>::IsMulti, 3,
895
+ Params...>::value,
896
+ /*IsMap=*/true, map_slot_policy<Key, Data>> {
897
+ using super_type = typename map_params_impl::common_params;
863
898
  using mapped_type = Data;
864
899
  // This type allows us to move keys when it is safe to do so. It is safe
865
900
  // for maps in which value_type and mutable_value_type are layout compatible.
@@ -868,6 +903,21 @@ struct map_params : common_params<Key, Compare, Alloc, TargetNodeSize, IsMulti,
868
903
  using value_type = typename super_type::value_type;
869
904
  using init_type = typename super_type::init_type;
870
905
 
906
+ static_assert(
907
+ std::is_same_v<
908
+ map_params<
909
+ Key, Data,
910
+ GetFromListOr<typename btree_map_defaults<Key, Data>::Compare, 0,
911
+ Params...>,
912
+ GetFromListOr<typename btree_map_defaults<Key, Data>::Alloc, 1,
913
+ Params...>,
914
+ GetFromListOr<
915
+ typename btree_map_defaults<Key, Data>::TargetNodeSize, 2,
916
+ Params...>::value,
917
+ GetFromListOr<typename btree_map_defaults<Key, Data>::IsMulti, 3,
918
+ Params...>::value>,
919
+ map_params_impl>);
920
+
871
921
  template <typename V>
872
922
  static auto key(const V &value ABSL_ATTRIBUTE_LIFETIME_BOUND)
873
923
  -> decltype((value.first)) {
@@ -56,9 +56,15 @@
56
56
  #ifndef ABSL_CONTAINER_BTREE_SET_H_
57
57
  #define ABSL_CONTAINER_BTREE_SET_H_
58
58
 
59
+ #include <functional>
60
+ #include <memory>
61
+ #include <type_traits>
62
+ #include <utility>
63
+
59
64
  #include "absl/base/attributes.h"
60
65
  #include "absl/container/internal/btree.h" // IWYU pragma: export
61
66
  #include "absl/container/internal/btree_container.h" // IWYU pragma: export
67
+ #include "absl/container/internal/common.h"
62
68
 
63
69
  namespace absl {
64
70
  ABSL_NAMESPACE_BEGIN
@@ -68,9 +74,27 @@ namespace container_internal {
68
74
  template <typename Key>
69
75
  struct set_slot_policy;
70
76
 
77
+ template <typename Key, typename...Params>
78
+ struct set_params_impl;
79
+
80
+ template <typename Key>
81
+ struct btree_set_defaults {
82
+ using Compare = std::less<Key>;
83
+ using Alloc = std::allocator<Key>;
84
+ using TargetNodeSize = std::integral_constant<int, 256>;
85
+ using IsMulti = std::false_type;
86
+ };
87
+
71
88
  template <typename Key, typename Compare, typename Alloc, int TargetNodeSize,
72
89
  bool IsMulti>
73
- struct set_params;
90
+ using set_params = typename ApplyWithoutDefaultSuffix<
91
+ set_params_impl,
92
+ TypeList<void, typename btree_set_defaults<Key>::Compare,
93
+ typename btree_set_defaults<Key>::Alloc,
94
+ typename btree_set_defaults<Key>::TargetNodeSize,
95
+ typename btree_set_defaults<Key>::IsMulti>,
96
+ TypeList<Key, Compare, Alloc, std::integral_constant<int, TargetNodeSize>,
97
+ std::integral_constant<bool, IsMulti>>>::type;
74
98
 
75
99
  } // namespace container_internal
76
100
 
@@ -803,12 +827,34 @@ struct set_slot_policy {
803
827
 
804
828
  // A parameters structure for holding the type parameters for a btree_set.
805
829
  // Compare and Alloc should be nothrow copy-constructible.
806
- template <typename Key, typename Compare, typename Alloc, int TargetNodeSize,
807
- bool IsMulti>
808
- struct set_params : common_params<Key, Compare, Alloc, TargetNodeSize, IsMulti,
809
- /*IsMap=*/false, set_slot_policy<Key>> {
830
+ template <typename Key, typename... Params>
831
+ struct set_params_impl
832
+ : common_params<
833
+ Key,
834
+ GetFromListOr<typename btree_set_defaults<Key>::Compare, 0,
835
+ Params...>,
836
+ GetFromListOr<typename btree_set_defaults<Key>::Alloc, 1, Params...>,
837
+ GetFromListOr<typename btree_set_defaults<Key>::TargetNodeSize, 2,
838
+ Params...>::value,
839
+ GetFromListOr<typename btree_set_defaults<Key>::IsMulti, 3,
840
+ Params...>::value,
841
+ /*IsMap=*/false, set_slot_policy<Key>> {
810
842
  using value_type = Key;
811
- using slot_type = typename set_params::common_params::slot_type;
843
+ using slot_type = typename set_params_impl::common_params::slot_type;
844
+
845
+ static_assert(
846
+ std::is_same_v<
847
+ set_params<
848
+ Key,
849
+ GetFromListOr<typename btree_set_defaults<Key>::Compare, 0,
850
+ Params...>,
851
+ GetFromListOr<typename btree_set_defaults<Key>::Alloc, 1,
852
+ Params...>,
853
+ GetFromListOr<typename btree_set_defaults<Key>::TargetNodeSize, 2,
854
+ Params...>::value,
855
+ GetFromListOr<typename btree_set_defaults<Key>::IsMulti, 3,
856
+ Params...>::value>,
857
+ set_params_impl>);
812
858
 
813
859
  template <typename V>
814
860
  static const V &key(const V &value) {