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
@@ -1408,6 +1408,824 @@ TEST(ConstexprTest, SearchNWithPredicate) {
1408
1408
  kArray.begin());
1409
1409
  }
1410
1410
 
1411
+ TEST(ConstexprTest, Copy) {
1412
+ static constexpr std::array kArray = {1, 2, 3};
1413
+ static constexpr auto kArrayCopy = [] {
1414
+ std::array<int, 3> array;
1415
+ absl::c_copy(kArray, array.begin());
1416
+ return array;
1417
+ }();
1418
+ static_assert(kArrayCopy == kArray);
1419
+ }
1420
+
1421
+ TEST(ConstexprTest, CopyN) {
1422
+ static constexpr std::array kArray = {1, 2, 3};
1423
+ static constexpr auto kArrayCopy = [] {
1424
+ std::array<int, 2> array;
1425
+ absl::c_copy_n(kArray, 2, array.begin());
1426
+ return array;
1427
+ }();
1428
+ static_assert(kArrayCopy == std::array{1, 2});
1429
+ }
1430
+
1431
+ TEST(ConstexprTest, CopyIf) {
1432
+ static constexpr std::array kArray = {1, 2, 3, 4};
1433
+ static constexpr auto kArrayCopy = [] {
1434
+ std::array<int, 3> array;
1435
+ absl::c_copy_if(kArray, array.begin(), [](int x) { return x > 1; });
1436
+ return array;
1437
+ }();
1438
+ static_assert(kArrayCopy == std::array{2, 3, 4});
1439
+ }
1440
+
1441
+ TEST(ConstexprTest, CopyBackward) {
1442
+ static constexpr std::array kArray = {1, 2, 3};
1443
+ static constexpr auto kArrayCopy = [] {
1444
+ std::array<int, 3> array;
1445
+ absl::c_copy_backward(kArray, array.end());
1446
+ return array;
1447
+ }();
1448
+ static_assert(kArrayCopy == kArray);
1449
+ }
1450
+
1451
+ TEST(ConstexprTest, Move) {
1452
+ static constexpr std::array kArray = {1, 2, 3};
1453
+ static constexpr auto kArrayMove = [] {
1454
+ std::array<int, 3> array;
1455
+ absl::c_move(kArray, array.begin());
1456
+ return array;
1457
+ }();
1458
+ static_assert(kArrayMove == kArray);
1459
+ }
1460
+
1461
+ TEST(ConstexprTest, MoveBackward) {
1462
+ static constexpr std::array kArray = {1, 2, 3};
1463
+ static constexpr auto kArrayMove = [] {
1464
+ std::array<int, 3> array;
1465
+ absl::c_move_backward(kArray, array.end());
1466
+ return array;
1467
+ }();
1468
+ static_assert(kArrayMove == kArray);
1469
+ }
1470
+
1471
+ TEST(ConstexprTest, SwapRanges) {
1472
+ static constexpr std::array kArray1 = {1, 2, 3};
1473
+ static constexpr std::array kArray2 = {4, 5, 6};
1474
+
1475
+ static constexpr auto kSwapped = [] {
1476
+ std::array arr1 = kArray1;
1477
+ std::array arr2 = kArray2;
1478
+ absl::c_swap_ranges(arr1, arr2);
1479
+ return std::make_pair(arr1, arr2);
1480
+ }();
1481
+
1482
+ static_assert(kSwapped.first == kArray2);
1483
+ static_assert(kSwapped.second == kArray1);
1484
+ }
1485
+
1486
+ TEST(ConstexprTest, Transform) {
1487
+ static constexpr std::array kArray = {1, 2, 3};
1488
+ static constexpr auto kArrayTransform = [] {
1489
+ std::array<int, 3> array;
1490
+ absl::c_transform(kArray, array.begin(), [](int x) { return x + 1; });
1491
+ return array;
1492
+ }();
1493
+ static_assert(kArrayTransform == std::array{2, 3, 4});
1494
+ }
1495
+
1496
+ TEST(ConstexprTest, Replace) {
1497
+ static constexpr std::array kArray = {1, 2, 3};
1498
+ static constexpr auto kArrayReplace = [] {
1499
+ std::array array = kArray;
1500
+ absl::c_replace(array, 1, 4);
1501
+ return array;
1502
+ }();
1503
+ static_assert(kArrayReplace == std::array{4, 2, 3});
1504
+ }
1505
+
1506
+ TEST(ConstexprTest, ReplaceIf) {
1507
+ static constexpr std::array kArray = {1, 2, 3};
1508
+ static constexpr auto kArrayReplaceIf = [] {
1509
+ std::array array = kArray;
1510
+ absl::c_replace_if(array, [](int x) { return x == 1; }, 4);
1511
+ return array;
1512
+ }();
1513
+ static_assert(kArrayReplaceIf == std::array{4, 2, 3});
1514
+ }
1515
+
1516
+ TEST(ConstexprTest, ReplaceCopy) {
1517
+ static constexpr std::array kArray = {1, 2, 3};
1518
+ static constexpr auto kArrayReplaceCopy = [] {
1519
+ std::array<int, 3> array;
1520
+ absl::c_replace_copy(kArray, array.begin(), 1, 4);
1521
+ return array;
1522
+ }();
1523
+ static_assert(kArrayReplaceCopy == std::array{4, 2, 3});
1524
+ }
1525
+
1526
+ TEST(ConstexprTest, ReplaceCopyIf) {
1527
+ static constexpr std::array kArray = {1, 2, 3};
1528
+ static constexpr auto kArrayReplaceCopyIf = [] {
1529
+ std::array<int, 3> array;
1530
+ absl::c_replace_copy_if(
1531
+ kArray, array.begin(), [](int x) { return x == 1; }, 4);
1532
+ return array;
1533
+ }();
1534
+ static_assert(kArrayReplaceCopyIf == std::array{4, 2, 3});
1535
+ }
1536
+
1537
+ TEST(ConstexprTest, Fill) {
1538
+ static constexpr auto kArrayFill = [] {
1539
+ std::array<int, 3> array;
1540
+ absl::c_fill(array, 4);
1541
+ return array;
1542
+ }();
1543
+ static_assert(kArrayFill == std::array{4, 4, 4});
1544
+ }
1545
+
1546
+ TEST(ConstexprTest, FillN) {
1547
+ static constexpr auto kArrayFillN = [] {
1548
+ std::array array = {0, 0, 0};
1549
+ absl::c_fill_n(array, 2, 4);
1550
+ return array;
1551
+ }();
1552
+ static_assert(kArrayFillN == std::array{4, 4, 0});
1553
+ }
1554
+
1555
+ TEST(ConstexprTest, Generate) {
1556
+ static constexpr auto kArrayGenerate = [] {
1557
+ std::array<int, 3> array;
1558
+ absl::c_generate(array, []() { return 4; });
1559
+ return array;
1560
+ }();
1561
+ static_assert(kArrayGenerate == std::array{4, 4, 4});
1562
+ }
1563
+
1564
+ TEST(ConstexprTest, GenerateN) {
1565
+ static constexpr auto kArrayGenerateN = [] {
1566
+ std::array array = {0, 0, 0};
1567
+ absl::c_generate_n(array, 2, []() { return 4; });
1568
+ return array;
1569
+ }();
1570
+ static_assert(kArrayGenerateN == std::array{4, 4, 0});
1571
+ }
1572
+
1573
+ TEST(ConstexprTest, RemoveCopy) {
1574
+ static constexpr std::array kArray = {1, 2, 3};
1575
+ static constexpr auto kArrayRemoveCopy = [] {
1576
+ std::array<int, 2> array;
1577
+ absl::c_remove_copy(kArray, array.begin(), 1);
1578
+ return array;
1579
+ }();
1580
+ static_assert(kArrayRemoveCopy == std::array{2, 3});
1581
+ }
1582
+
1583
+ TEST(ConstexprTest, RemoveCopyIf) {
1584
+ static constexpr std::array kArray = {1, 2, 3};
1585
+ static constexpr auto kArrayRemoveCopyIf = [] {
1586
+ std::array<int, 2> array;
1587
+ absl::c_remove_copy_if(kArray, array.begin(), [](int x) { return x == 1; });
1588
+ return array;
1589
+ }();
1590
+ static_assert(kArrayRemoveCopyIf == std::array{2, 3});
1591
+ }
1592
+
1593
+ TEST(ConstexprTest, UniqueCopy) {
1594
+ static constexpr std::array kArray = {1, 2, 2, 3};
1595
+ static constexpr auto kArrayUniqueCopy = [] {
1596
+ std::array<int, 3> array;
1597
+ absl::c_unique_copy(kArray, array.begin());
1598
+ return array;
1599
+ }();
1600
+ static_assert(kArrayUniqueCopy == std::array{1, 2, 3});
1601
+ }
1602
+
1603
+ TEST(ConstexprTest, UniqueCopyWithPredicate) {
1604
+ static constexpr std::array kArray = {1, 2, 2, 3};
1605
+ static constexpr auto kArrayUniqueCopy = [] {
1606
+ std::array<int, 3> array;
1607
+ absl::c_unique_copy(kArray, array.begin(), std::equal_to<>());
1608
+ return array;
1609
+ }();
1610
+ static_assert(kArrayUniqueCopy == std::array{1, 2, 3});
1611
+ }
1612
+
1613
+ TEST(ConstexprTest, Reverse) {
1614
+ static constexpr std::array kArray = {1, 2, 3};
1615
+ static constexpr auto kArrayReverse = [] {
1616
+ std::array array = kArray;
1617
+ absl::c_reverse(array);
1618
+ return array;
1619
+ }();
1620
+ static_assert(kArrayReverse == std::array{3, 2, 1});
1621
+ }
1622
+
1623
+ TEST(ConstexprTest, ReverseCopy) {
1624
+ static constexpr std::array kArray = {1, 2, 3};
1625
+ static constexpr auto kArrayReverseCopy = [] {
1626
+ std::array<int, 3> array;
1627
+ absl::c_reverse_copy(kArray, array.begin());
1628
+ return array;
1629
+ }();
1630
+ static_assert(kArrayReverseCopy == std::array{3, 2, 1});
1631
+ }
1632
+
1633
+ TEST(ConstexprTest, Rotate) {
1634
+ static constexpr std::array kArray = {1, 2, 3};
1635
+ static constexpr auto kArrayRotate = [] {
1636
+ std::array array = kArray;
1637
+ absl::c_rotate(array, array.begin() + 1);
1638
+ return array;
1639
+ }();
1640
+ static_assert(kArrayRotate == std::array{2, 3, 1});
1641
+ }
1642
+
1643
+ TEST(ConstexprTest, RotateCopy) {
1644
+ static constexpr std::array kArray = {1, 2, 3};
1645
+ static constexpr auto kArrayRotateCopy = [] {
1646
+ std::array<int, 3> array;
1647
+ absl::c_rotate_copy(kArray, kArray.begin() + 1, array.begin());
1648
+ return array;
1649
+ }();
1650
+ static_assert(kArrayRotateCopy == std::array{2, 3, 1});
1651
+ }
1652
+
1653
+ TEST(ConstexprTest, IsPartitioned) {
1654
+ static constexpr std::array kArray = {1, 2, 3};
1655
+ static_assert(!absl::c_is_partitioned(kArray, [](int x) { return x > 1; }));
1656
+
1657
+ static constexpr std::array kPartitionedArray = {2, 3, 1};
1658
+ static_assert(
1659
+ absl::c_is_partitioned(kPartitionedArray, [](int x) { return x > 1; }));
1660
+ }
1661
+
1662
+ TEST(ConstexprTest, Partition) {
1663
+ static constexpr std::array kArray = {1, 2, 3};
1664
+ static constexpr auto kArrayPartition = [] {
1665
+ std::array array = kArray;
1666
+ absl::c_partition(array, [](int x) { return x > 1; });
1667
+ return array;
1668
+ }();
1669
+ static_assert(
1670
+ absl::c_is_partitioned(kArrayPartition, [](int x) { return x > 1; }));
1671
+ }
1672
+
1673
+ TEST(ConstexprTest, PartitionCopy) {
1674
+ static constexpr std::array kArray = {1, 2, 3};
1675
+ static constexpr auto kPartitioned = [] {
1676
+ std::array<int, 2> true_part;
1677
+ std::array<int, 1> false_part;
1678
+ absl::c_partition_copy(kArray, true_part.begin(), false_part.begin(),
1679
+ [](int x) { return x > 1; });
1680
+ return std::make_pair(true_part, false_part);
1681
+ }();
1682
+ static_assert(kPartitioned.first == std::array{2, 3});
1683
+ static_assert(kPartitioned.second == std::array{1});
1684
+ }
1685
+
1686
+ TEST(ConstexprTest, PartitionPoint) {
1687
+ static constexpr std::array kArray = {1, 2, 3};
1688
+ static constexpr auto kPartitionPoint =
1689
+ absl::c_partition_point(kArray, [](int x) { return x > 1; });
1690
+ static_assert(kPartitionPoint == kArray.end());
1691
+ }
1692
+
1693
+ TEST(ConstexprTest, Sort) {
1694
+ static constexpr std::array kArray = {2, 1, 3};
1695
+ static constexpr auto kArraySort = [] {
1696
+ std::array array = kArray;
1697
+ absl::c_sort(array);
1698
+ return array;
1699
+ }();
1700
+ static_assert(kArraySort == std::array{1, 2, 3});
1701
+ }
1702
+
1703
+ TEST(ConstexprTest, SortWithPredicate) {
1704
+ static constexpr std::array kArray = {1, 2, 3};
1705
+ static constexpr auto kArraySort = [] {
1706
+ std::array array = kArray;
1707
+ absl::c_sort(array, std::greater<>());
1708
+ return array;
1709
+ }();
1710
+ static_assert(kArraySort == std::array{3, 2, 1});
1711
+ }
1712
+
1713
+ TEST(ConstexprTest, IsSorted) {
1714
+ static constexpr std::array kSortedArray = {1, 2, 3};
1715
+ static_assert(absl::c_is_sorted(kSortedArray));
1716
+ static constexpr std::array kUnsortedArray = {1, 3, 2};
1717
+ static_assert(!absl::c_is_sorted(kUnsortedArray));
1718
+ }
1719
+
1720
+ TEST(ConstexprTest, IsSortedWithPredicate) {
1721
+ static constexpr std::array kSortedArray = {3, 2, 1};
1722
+ static_assert(absl::c_is_sorted(kSortedArray, std::greater<>()));
1723
+ static constexpr std::array kUnsortedArray = {1, 3, 2};
1724
+ static_assert(!absl::c_is_sorted(kUnsortedArray, std::greater<>()));
1725
+ }
1726
+
1727
+ TEST(ConstexprTest, PartialSort) {
1728
+ static constexpr std::array kArray = {3, 1, 4, 2};
1729
+ static constexpr auto kArrayPartialSort = [] {
1730
+ std::array array = kArray;
1731
+ absl::c_partial_sort(array, array.begin() + 2);
1732
+ return array;
1733
+ }();
1734
+ static_assert(kArrayPartialSort[0] == 1);
1735
+ static_assert(kArrayPartialSort[1] == 2);
1736
+ }
1737
+
1738
+ TEST(ConstexprTest, PartialSortWithPredicate) {
1739
+ static constexpr std::array kArray = {3, 1, 4, 2};
1740
+ static constexpr auto kArrayPartialSort = [] {
1741
+ std::array array = kArray;
1742
+ absl::c_partial_sort(array, array.begin() + 2, std::greater<>());
1743
+ return array;
1744
+ }();
1745
+ static_assert(kArrayPartialSort[0] == 4);
1746
+ static_assert(kArrayPartialSort[1] == 3);
1747
+ }
1748
+
1749
+ TEST(ConstexprTest, PartialSortCopy) {
1750
+ static constexpr std::array kArray = {3, 1, 4, 2};
1751
+ static constexpr auto kArrayPartialSort = [] {
1752
+ std::array<int, 4> array;
1753
+ absl::c_partial_sort_copy(kArray, array);
1754
+ return array;
1755
+ }();
1756
+ static_assert(kArrayPartialSort[0] == 1);
1757
+ static_assert(kArrayPartialSort[1] == 2);
1758
+ }
1759
+
1760
+ TEST(ConstexprTest, PartialSortCopyWithPredicate) {
1761
+ static constexpr std::array kArray = {3, 1, 4, 2};
1762
+ static constexpr auto kArrayPartialSort = [] {
1763
+ std::array<int, 4> array;
1764
+ absl::c_partial_sort_copy(kArray, array, std::greater<>());
1765
+ return array;
1766
+ }();
1767
+ static_assert(kArrayPartialSort[0] == 4);
1768
+ static_assert(kArrayPartialSort[1] == 3);
1769
+ }
1770
+
1771
+ TEST(ConstexprTest, IsSortedUntil) {
1772
+ static constexpr std::array kSortedArray = {1, 2, 3};
1773
+ static_assert(absl::c_is_sorted_until(kSortedArray) == kSortedArray.end());
1774
+ static constexpr std::array kUnsortedArray = {1, 3, 2};
1775
+ static_assert(absl::c_is_sorted_until(kUnsortedArray) ==
1776
+ kUnsortedArray.begin() + 2);
1777
+ }
1778
+
1779
+ TEST(ConstexprTest, IsSortedUntilWithPredicate) {
1780
+ static constexpr std::array kSortedArray = {3, 2, 1};
1781
+ static_assert(absl::c_is_sorted_until(kSortedArray, std::greater<>()) ==
1782
+ kSortedArray.end());
1783
+ static constexpr std::array kUnsortedArray = {1, 3, 2};
1784
+ static_assert(absl::c_is_sorted_until(kUnsortedArray, std::greater<>()) ==
1785
+ kUnsortedArray.begin() + 1);
1786
+ }
1787
+
1788
+ TEST(ConstexprTest, NthElement) {
1789
+ static constexpr std::array kArray = {2, 1, 3, 4};
1790
+ static constexpr auto kArrayNthElement = [] {
1791
+ std::array array = kArray;
1792
+ absl::c_nth_element(array, array.begin() + 2);
1793
+ return array;
1794
+ }();
1795
+ static_assert(kArrayNthElement[2] == 3);
1796
+ static_assert(kArrayNthElement[0] <= kArrayNthElement[2]);
1797
+ static_assert(kArrayNthElement[1] <= kArrayNthElement[2]);
1798
+ static_assert(kArrayNthElement[3] >= kArrayNthElement[2]);
1799
+ }
1800
+
1801
+ TEST(ConstexprTest, NthElementWithPredicate) {
1802
+ static constexpr std::array kArray = {1, 2, 3, 4};
1803
+ static constexpr auto kArrayNthElement = [] {
1804
+ std::array array = kArray;
1805
+ absl::c_nth_element(array, array.begin() + 2, std::greater<>());
1806
+ return array;
1807
+ }();
1808
+ static_assert(kArrayNthElement[2] == 2);
1809
+ static_assert(std::greater<>()(kArrayNthElement[0], kArrayNthElement[2]) ||
1810
+ kArrayNthElement[0] == kArrayNthElement[2]);
1811
+ static_assert(std::greater<>()(kArrayNthElement[1], kArrayNthElement[2]) ||
1812
+ kArrayNthElement[1] == kArrayNthElement[2]);
1813
+ static_assert(std::greater<>()(kArrayNthElement[2], kArrayNthElement[3]) ||
1814
+ kArrayNthElement[2] == kArrayNthElement[3]);
1815
+ }
1816
+
1817
+ TEST(ConstexprTest, LowerBound) {
1818
+ static constexpr std::array kArray = {1, 2, 3, 4};
1819
+ static constexpr auto kLowerBound = absl::c_lower_bound(kArray, 2);
1820
+ static_assert(kLowerBound == kArray.begin() + 1);
1821
+ }
1822
+
1823
+ TEST(ConstexprTest, LowerBoundWithPredicate) {
1824
+ static constexpr std::array kArray = {4, 3, 2, 1};
1825
+ static constexpr auto kLowerBound =
1826
+ absl::c_lower_bound(kArray, 2, std::greater<>());
1827
+ static_assert(kLowerBound == kArray.begin() + 2);
1828
+ }
1829
+
1830
+ TEST(ConstexprTest, UpperBound) {
1831
+ static constexpr std::array kArray = {1, 2, 3, 4};
1832
+ static constexpr auto kUpperBound = absl::c_upper_bound(kArray, 2);
1833
+ static_assert(kUpperBound == kArray.begin() + 2);
1834
+ }
1835
+
1836
+ TEST(ConstexprTest, UpperBoundWithPredicate) {
1837
+ static constexpr std::array kArray = {4, 3, 2, 1};
1838
+ static constexpr auto kUpperBound =
1839
+ absl::c_upper_bound(kArray, 2, std::greater<>());
1840
+ static_assert(kUpperBound == kArray.begin() + 3);
1841
+ }
1842
+
1843
+ TEST(ConstexprTest, EqualRange) {
1844
+ static constexpr std::array kArray = {1, 2, 3, 4};
1845
+ static constexpr auto kEqualRange = absl::c_equal_range(kArray, 2);
1846
+ static_assert(kEqualRange.first == kArray.begin() + 1);
1847
+ static_assert(kEqualRange.second == kArray.begin() + 2);
1848
+ }
1849
+
1850
+ TEST(ConstexprTest, EqualRangeWithPredicate) {
1851
+ static constexpr std::array kArray = {4, 3, 2, 1};
1852
+ static constexpr auto kEqualRange =
1853
+ absl::c_equal_range(kArray, 2, std::greater<>());
1854
+ static_assert(kEqualRange.first == kArray.begin() + 2);
1855
+ static_assert(kEqualRange.second == kArray.begin() + 3);
1856
+ }
1857
+
1858
+ TEST(ConstexprTest, BinarySearch) {
1859
+ static constexpr std::array kArray = {1, 2, 3, 4};
1860
+ static constexpr bool kBinarySearch = absl::c_binary_search(kArray, 2);
1861
+ static_assert(kBinarySearch);
1862
+ }
1863
+
1864
+ TEST(ConstexprTest, BinarySearchWithPredicate) {
1865
+ static constexpr std::array kArray = {4, 3, 2, 1};
1866
+ static constexpr bool kBinarySearch =
1867
+ absl::c_binary_search(kArray, 2, std::greater<>());
1868
+ static_assert(kBinarySearch);
1869
+ }
1870
+
1871
+ TEST(ConstexprTest, Merge) {
1872
+ static constexpr std::array kArray1 = {1, 2, 3};
1873
+ static constexpr std::array kArray2 = {4, 5, 6};
1874
+ static constexpr auto kArrayMerge = [] {
1875
+ std::array<int, 6> array;
1876
+ absl::c_merge(kArray1, kArray2, array.begin());
1877
+ return array;
1878
+ }();
1879
+ static_assert(kArrayMerge == std::array{1, 2, 3, 4, 5, 6});
1880
+ }
1881
+
1882
+ TEST(ConstexprTest, MergeWithPredicate) {
1883
+ static constexpr std::array kArray1 = {3, 2, 1};
1884
+ static constexpr std::array kArray2 = {6, 5, 4};
1885
+ static constexpr auto kArrayMerge = [] {
1886
+ std::array<int, 6> array;
1887
+ absl::c_merge(kArray1, kArray2, array.begin(), std::greater<>());
1888
+ return array;
1889
+ }();
1890
+ static_assert(kArrayMerge == std::array{6, 5, 4, 3, 2, 1});
1891
+ }
1892
+
1893
+ TEST(ConstexprTest, Includes) {
1894
+ static constexpr std::array kArray1 = {1, 2, 3, 4, 5, 6};
1895
+ static constexpr std::array kArray2 = {2, 3, 5};
1896
+ static constexpr bool kIncludes = absl::c_includes(kArray1, kArray2);
1897
+ static_assert(kIncludes);
1898
+ }
1899
+
1900
+ TEST(ConstexprTest, IncludesWithPredicate) {
1901
+ static constexpr std::array kArray1 = {6, 5, 4, 3, 2, 1};
1902
+ static constexpr std::array kArray2 = {5, 3, 2};
1903
+ static constexpr bool kIncludes =
1904
+ absl::c_includes(kArray1, kArray2, std::greater<>());
1905
+ static_assert(kIncludes);
1906
+ }
1907
+
1908
+ TEST(ConstexprTest, SetUnion) {
1909
+ static constexpr std::array kArray1 = {1, 2, 3};
1910
+ static constexpr std::array kArray2 = {1, 3, 4};
1911
+ static constexpr auto kArraySetUnion = [] {
1912
+ std::array<int, 4> array;
1913
+ absl::c_set_union(kArray1, kArray2, array.begin());
1914
+ return array;
1915
+ }();
1916
+ static_assert(kArraySetUnion == std::array{1, 2, 3, 4});
1917
+ }
1918
+
1919
+ TEST(ConstexprTest, SetUnionWithPredicate) {
1920
+ static constexpr std::array kArray1 = {3, 2, 1};
1921
+ static constexpr std::array kArray2 = {4, 3, 1};
1922
+ static constexpr auto kArraySetUnion = [] {
1923
+ std::array<int, 4> array;
1924
+ absl::c_set_union(kArray1, kArray2, array.begin(), std::greater<>());
1925
+ return array;
1926
+ }();
1927
+ static_assert(kArraySetUnion == std::array{4, 3, 2, 1});
1928
+ }
1929
+
1930
+ TEST(ConstexprTest, SetIntersection) {
1931
+ static constexpr std::array kArray1 = {1, 2, 3};
1932
+ static constexpr std::array kArray2 = {1, 3, 4};
1933
+ static constexpr auto kArraySetIntersection = [] {
1934
+ std::array<int, 2> array;
1935
+ absl::c_set_intersection(kArray1, kArray2, array.begin());
1936
+ return array;
1937
+ }();
1938
+ static_assert(kArraySetIntersection == std::array{1, 3});
1939
+ }
1940
+
1941
+ TEST(ConstexprTest, SetIntersectionWithPredicate) {
1942
+ static constexpr std::array kArray1 = {3, 2, 1};
1943
+ static constexpr std::array kArray2 = {4, 3, 1};
1944
+ static constexpr auto kArraySetIntersection = [] {
1945
+ std::array<int, 2> array;
1946
+ absl::c_set_intersection(kArray1, kArray2, array.begin(), std::greater<>());
1947
+ return array;
1948
+ }();
1949
+ static_assert(kArraySetIntersection == std::array{3, 1});
1950
+ }
1951
+
1952
+ TEST(ConstexprTest, SetDifference) {
1953
+ static constexpr std::array kArray1 = {1, 2, 3};
1954
+ static constexpr std::array kArray2 = {1, 3, 4};
1955
+ static constexpr auto kArraySetDifference = [] {
1956
+ std::array<int, 1> array;
1957
+ absl::c_set_difference(kArray1, kArray2, array.begin());
1958
+ return array;
1959
+ }();
1960
+ static_assert(kArraySetDifference == std::array{2});
1961
+ }
1962
+
1963
+ TEST(ConstexprTest, SetDifferenceWithPredicate) {
1964
+ static constexpr std::array kArray1 = {3, 2, 1};
1965
+ static constexpr std::array kArray2 = {4, 3, 1};
1966
+ static constexpr auto kArraySetDifference = [] {
1967
+ std::array<int, 1> array;
1968
+ absl::c_set_difference(kArray1, kArray2, array.begin(), std::greater<>());
1969
+ return array;
1970
+ }();
1971
+ static_assert(kArraySetDifference == std::array{2});
1972
+ }
1973
+
1974
+ TEST(ConstexprTest, SetSymmetricDifference) {
1975
+ static constexpr std::array kArray1 = {1, 2, 3};
1976
+ static constexpr std::array kArray2 = {1, 3, 4};
1977
+ static constexpr auto kArraySetSymmetricDifference = [] {
1978
+ std::array<int, 2> array;
1979
+ absl::c_set_symmetric_difference(kArray1, kArray2, array.begin());
1980
+ return array;
1981
+ }();
1982
+ static_assert(kArraySetSymmetricDifference == std::array{2, 4});
1983
+ }
1984
+
1985
+ TEST(ConstexprTest, SetSymmetricDifferenceWithPredicate) {
1986
+ static constexpr std::array kArray1 = {3, 2, 1};
1987
+ static constexpr std::array kArray2 = {4, 3, 1};
1988
+ static constexpr auto kArraySetSymmetricDifference = [] {
1989
+ std::array<int, 2> array;
1990
+ absl::c_set_symmetric_difference(kArray1, kArray2, array.begin(),
1991
+ std::greater<>());
1992
+ return array;
1993
+ }();
1994
+ static_assert(kArraySetSymmetricDifference == std::array{4, 2});
1995
+ }
1996
+
1997
+ TEST(ConstexprTest, PushHeap) {
1998
+ static constexpr auto kArray = [] {
1999
+ std::array array = {1, 2, 3, 4};
2000
+ absl::c_push_heap(array);
2001
+ return array;
2002
+ }();
2003
+ static_assert(kArray[0] == 4);
2004
+ }
2005
+
2006
+ TEST(ConstexprTest, PushHeapWithPredicate) {
2007
+ static constexpr auto kArray = [] {
2008
+ std::array array = {4, 3, 2, 1};
2009
+ absl::c_push_heap(array, std::greater<>());
2010
+ return array;
2011
+ }();
2012
+ static_assert(kArray[0] == 1);
2013
+ }
2014
+
2015
+ TEST(ConstexprTest, PopHeap) {
2016
+ static constexpr auto kArray = [] {
2017
+ std::array array = {4, 3, 2, 1};
2018
+ absl::c_pop_heap(array);
2019
+ return array;
2020
+ }();
2021
+ static_assert(kArray[3] == 4);
2022
+ }
2023
+
2024
+ TEST(ConstexprTest, PopHeapWithPredicate) {
2025
+ static constexpr auto kArray = [] {
2026
+ std::array array = {1, 2, 3, 4};
2027
+ absl::c_pop_heap(array, std::greater<>());
2028
+ return array;
2029
+ }();
2030
+ static_assert(kArray[3] == 1);
2031
+ }
2032
+
2033
+ TEST(ConstexprTest, MakeHeap) {
2034
+ static constexpr auto kArray = [] {
2035
+ std::array array = {1, 2, 3, 4};
2036
+ absl::c_make_heap(array);
2037
+ return array;
2038
+ }();
2039
+ static_assert(absl::c_is_heap(kArray));
2040
+ }
2041
+
2042
+ TEST(ConstexprTest, MakeHeapWithPredicate) {
2043
+ static constexpr auto kArray = [] {
2044
+ std::array array = {4, 3, 2, 1};
2045
+ absl::c_make_heap(array, std::greater<>());
2046
+ return array;
2047
+ }();
2048
+ static_assert(absl::c_is_heap(kArray, std::greater<>()));
2049
+ }
2050
+
2051
+ TEST(ConstexprTest, SortHeap) {
2052
+ static constexpr auto kArray = [] {
2053
+ std::array array = {1, 2, 3, 4};
2054
+ absl::c_make_heap(array);
2055
+ absl::c_sort_heap(array);
2056
+ return array;
2057
+ }();
2058
+ static_assert(kArray == std::array{1, 2, 3, 4});
2059
+ }
2060
+
2061
+ TEST(ConstexprTest, SortHeapWithPredicate) {
2062
+ static constexpr auto kArray = [] {
2063
+ std::array array = {4, 3, 2, 1};
2064
+ absl::c_make_heap(array, std::greater<>());
2065
+ absl::c_sort_heap(array, std::greater<>());
2066
+ return array;
2067
+ }();
2068
+ static_assert(kArray == std::array{4, 3, 2, 1});
2069
+ }
2070
+
2071
+ TEST(ConstexprTest, IsHeap) {
2072
+ static constexpr std::array kHeap = {4, 2, 3, 1};
2073
+ static_assert(absl::c_is_heap(kHeap));
2074
+ static constexpr std::array kNotHeap = {1, 2, 3, 4};
2075
+ static_assert(!absl::c_is_heap(kNotHeap));
2076
+ }
2077
+
2078
+ TEST(ConstexprTest, IsHeapWithPredicate) {
2079
+ static constexpr std::array kHeap = {1, 2, 3, 4};
2080
+ static_assert(absl::c_is_heap(kHeap, std::greater<>()));
2081
+ static constexpr std::array kNotHeap = {4, 3, 2, 1};
2082
+ static_assert(!absl::c_is_heap(kNotHeap, std::greater<>()));
2083
+ }
2084
+
2085
+ TEST(ConstexprTest, IsHeapUntil) {
2086
+ static constexpr std::array kHeap = {4, 2, 3, 1};
2087
+ static_assert(absl::c_is_heap_until(kHeap) == kHeap.end());
2088
+ static constexpr std::array kNotHeap = {4, 2, 3, 5};
2089
+ static_assert(absl::c_is_heap_until(kNotHeap) == kNotHeap.begin() + 3);
2090
+ }
2091
+
2092
+ TEST(ConstexprTest, IsHeapUntilWithPredicate) {
2093
+ static constexpr std::array kHeap = {1, 2, 3, 4};
2094
+ static_assert(absl::c_is_heap_until(kHeap, std::greater<>()) == kHeap.end());
2095
+ static constexpr std::array kNotHeap = {1, 2, 3, 0};
2096
+ static_assert(absl::c_is_heap_until(kNotHeap, std::greater<>()) ==
2097
+ kNotHeap.begin() + 3);
2098
+ }
2099
+
2100
+ TEST(ConstexprTest, LexicographicalCompare) {
2101
+ static constexpr std::array kArray1 = {1, 2, 3};
2102
+ static constexpr std::array kArray2 = {1, 2, 4};
2103
+ static constexpr std::array kArray3 = {1, 2, 3};
2104
+ static_assert(absl::c_lexicographical_compare(kArray1, kArray2));
2105
+ static_assert(!absl::c_lexicographical_compare(kArray2, kArray1));
2106
+ static_assert(!absl::c_lexicographical_compare(kArray1, kArray3));
2107
+ }
2108
+
2109
+ TEST(ConstexprTest, LexicographicalCompareWithPredicate) {
2110
+ static constexpr std::array kArray1 = {1, 2, 3};
2111
+ static constexpr std::array kArray2 = {1, 2, 4};
2112
+ static constexpr std::array kArray3 = {1, 2, 3};
2113
+ static_assert(
2114
+ !absl::c_lexicographical_compare(kArray1, kArray2, std::greater<>()));
2115
+ static_assert(
2116
+ absl::c_lexicographical_compare(kArray2, kArray1, std::greater<>()));
2117
+ static_assert(
2118
+ !absl::c_lexicographical_compare(kArray1, kArray3, std::greater<>()));
2119
+ }
2120
+
2121
+ TEST(ConstexprTest, NextPermutation) {
2122
+ static constexpr auto kArray = [] {
2123
+ std::array array = {1, 2, 3};
2124
+ absl::c_next_permutation(array);
2125
+ return array;
2126
+ }();
2127
+ static_assert(kArray == std::array{1, 3, 2});
2128
+ }
2129
+
2130
+ TEST(ConstexprTest, NextPermutationWithPredicate) {
2131
+ static constexpr auto kArray = [] {
2132
+ std::array array = {3, 2, 1};
2133
+ absl::c_next_permutation(array, std::greater<>());
2134
+ return array;
2135
+ }();
2136
+ static_assert(kArray == std::array{3, 1, 2});
2137
+ }
2138
+
2139
+ TEST(ConstexprTest, PrevPermutation) {
2140
+ static constexpr auto kArray = [] {
2141
+ std::array array = {1, 3, 2};
2142
+ absl::c_prev_permutation(array);
2143
+ return array;
2144
+ }();
2145
+ static_assert(kArray == std::array{1, 2, 3});
2146
+ }
2147
+
2148
+ TEST(ConstexprTest, PrevPermutationWithPredicate) {
2149
+ static constexpr auto kArray = [] {
2150
+ std::array array = {1, 2, 3};
2151
+ absl::c_prev_permutation(array, std::greater<>());
2152
+ return array;
2153
+ }();
2154
+ static_assert(kArray == std::array{1, 3, 2});
2155
+ }
2156
+
2157
+ TEST(ConstexprTest, Iota) {
2158
+ static constexpr auto kArray = [] {
2159
+ std::array<int, 3> array;
2160
+ absl::c_iota(array, 1);
2161
+ return array;
2162
+ }();
2163
+ static_assert(kArray == std::array{1, 2, 3});
2164
+ }
2165
+
2166
+ TEST(ConstexprTest, Accumulate) {
2167
+ static constexpr std::array kArray = {1, 2, 3};
2168
+ static_assert(absl::c_accumulate(kArray, 0) == 6);
2169
+ }
2170
+
2171
+ TEST(ConstexprTest, AccumulateWithPredicate) {
2172
+ static constexpr std::array kArray = {1, 2, 3};
2173
+ static_assert(absl::c_accumulate(kArray, 1, std::multiplies<>()) == 6);
2174
+ }
2175
+
2176
+ TEST(ConstexprTest, InnerProduct) {
2177
+ static constexpr std::array kArray1 = {1, 2, 3};
2178
+ static constexpr std::array kArray2 = {4, 5, 6};
2179
+ static_assert(absl::c_inner_product(kArray1, kArray2, 0) == 32);
2180
+ }
2181
+
2182
+ TEST(ConstexprTest, InnerProductWithPredicate) {
2183
+ static constexpr std::array kArray1 = {1, 2, 3};
2184
+ static constexpr std::array kArray2 = {4, 5, 6};
2185
+ static_assert(absl::c_inner_product(kArray1, kArray2, 1, std::multiplies<>(),
2186
+ std::plus<>()) == 315);
2187
+ }
2188
+
2189
+ TEST(ConstexprTest, AdjacentDifference) {
2190
+ static constexpr std::array kArray = {1, 2, 4};
2191
+ static constexpr auto kArrayAdjacentDifference = [] {
2192
+ std::array<int, 3> array;
2193
+ absl::c_adjacent_difference(kArray, array.begin());
2194
+ return array;
2195
+ }();
2196
+ static_assert(kArrayAdjacentDifference == std::array{1, 1, 2});
2197
+ }
2198
+
2199
+ TEST(ConstexprTest, AdjacentDifferenceWithPredicate) {
2200
+ static constexpr std::array kArray = {1, 2, 4};
2201
+ static constexpr auto kArrayAdjacentDifference = [] {
2202
+ std::array<int, 3> array;
2203
+ absl::c_adjacent_difference(kArray, array.begin(), std::multiplies<>());
2204
+ return array;
2205
+ }();
2206
+ static_assert(kArrayAdjacentDifference == std::array{1, 2, 8});
2207
+ }
2208
+
2209
+ TEST(ConstexprTest, PartialSum) {
2210
+ static constexpr std::array kArray = {1, 2, 3};
2211
+ static constexpr auto kArrayPartialSum = [] {
2212
+ std::array<int, 3> array;
2213
+ absl::c_partial_sum(kArray, array.begin());
2214
+ return array;
2215
+ }();
2216
+ static_assert(kArrayPartialSum == std::array{1, 3, 6});
2217
+ }
2218
+
2219
+ TEST(ConstexprTest, PartialSumWithPredicate) {
2220
+ static constexpr std::array kArray = {1, 2, 3};
2221
+ static constexpr auto kArrayPartialSum = [] {
2222
+ std::array<int, 3> array;
2223
+ absl::c_partial_sum(kArray, array.begin(), std::multiplies<>());
2224
+ return array;
2225
+ }();
2226
+ static_assert(kArrayPartialSum == std::array{1, 2, 6});
2227
+ }
2228
+
1411
2229
  #endif // defined(ABSL_INTERNAL_CPLUSPLUS_LANG) &&
1412
2230
  // ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
1413
2231