re2 1.24.0 → 1.25.0

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 (370) hide show
  1. package/LICENSE +15 -20
  2. package/README.md +63 -4
  3. package/binding.gyp +1 -2
  4. package/lib/addon.cc +9 -5
  5. package/lib/exec.cc +4 -4
  6. package/lib/match.cc +4 -4
  7. package/lib/new.cc +6 -6
  8. package/lib/pattern.cc +148 -1
  9. package/lib/replace.cc +5 -4
  10. package/lib/search.cc +1 -1
  11. package/lib/set.cc +85 -10
  12. package/lib/test.cc +1 -1
  13. package/lib/unicode_properties.h +15840 -0
  14. package/lib/wrapped_re2.h +40 -4
  15. package/lib/wrapped_re2_set.h +3 -1
  16. package/llms-full.txt +497 -0
  17. package/llms.txt +135 -0
  18. package/package.json +19 -11
  19. package/re2.d.ts +2 -0
  20. package/re2.js +1 -0
  21. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
  22. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  23. package/vendor/abseil-cpp/FAQ.md +130 -79
  24. package/vendor/abseil-cpp/MODULE.bazel +6 -7
  25. package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
  26. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
  27. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
  28. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  29. package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
  30. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
  31. package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
  32. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
  33. package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
  34. package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
  35. package/vendor/abseil-cpp/absl/base/casts.h +8 -1
  36. package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
  37. package/vendor/abseil-cpp/absl/base/config.h +53 -9
  38. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
  39. package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
  40. package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
  41. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
  42. package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
  43. package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
  44. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
  45. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
  46. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  47. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
  48. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  49. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  50. package/vendor/abseil-cpp/absl/base/macros.h +36 -20
  51. package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
  52. package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
  53. package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
  54. package/vendor/abseil-cpp/absl/base/options.h +55 -1
  55. package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
  56. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  57. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  58. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
  59. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
  60. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
  61. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
  62. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  63. package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
  64. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
  65. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
  68. package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
  69. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
  70. package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
  71. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
  72. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
  73. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
  74. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
  75. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
  76. package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
  77. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
  78. package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
  79. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
  80. package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
  81. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  82. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
  83. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
  84. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
  87. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
  88. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
  89. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
  90. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
  91. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
  92. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
  93. package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
  94. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
  95. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
  96. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
  97. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
  101. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
  102. package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
  103. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
  104. package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
  105. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
  106. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
  107. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
  108. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
  109. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
  110. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
  111. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  112. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  113. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  114. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
  115. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
  116. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
  117. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  118. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
  119. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
  120. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
  121. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
  122. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
  123. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  124. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
  125. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
  126. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
  127. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
  128. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
  129. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  130. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
  131. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
  132. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  133. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
  134. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
  135. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  136. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
  137. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
  138. package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
  139. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
  140. package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
  141. package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
  142. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
  143. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
  144. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
  145. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
  146. package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
  147. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
  148. package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
  149. package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
  150. package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
  151. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
  152. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
  153. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
  154. package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  155. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  156. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  157. package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
  158. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
  159. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
  160. package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
  161. package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
  162. package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
  163. package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
  164. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
  165. package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
  166. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
  167. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
  168. package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
  169. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
  170. package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  171. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
  172. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
  173. package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
  174. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  175. package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
  176. package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  177. package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  178. package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
  179. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
  180. package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
  181. package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
  182. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
  183. package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
  184. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
  185. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
  186. package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  187. package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
  188. package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
  189. package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
  190. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  191. package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
  192. package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
  193. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
  194. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
  195. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
  196. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
  197. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
  198. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
  199. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
  200. package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
  201. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
  202. package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
  203. package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
  204. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  205. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
  206. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  207. package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
  208. package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
  209. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  210. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
  211. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  212. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  213. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  214. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  215. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
  216. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
  217. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  218. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
  219. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  220. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
  221. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  222. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  223. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
  224. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
  225. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  226. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
  227. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  228. package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
  229. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
  230. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  231. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
  232. package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
  233. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
  234. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  235. package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
  236. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  237. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  238. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
  239. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
  240. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
  241. package/vendor/abseil-cpp/absl/status/status.cc +62 -70
  242. package/vendor/abseil-cpp/absl/status/status.h +249 -23
  243. package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
  244. package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
  245. package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
  246. package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
  247. package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
  248. package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
  249. package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
  250. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
  251. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  252. package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
  253. package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
  254. package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
  255. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
  256. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
  257. package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
  258. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
  259. package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
  260. package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
  261. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  262. package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
  263. package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
  264. package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
  265. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
  266. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
  267. package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
  268. package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
  269. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
  270. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
  271. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  272. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  273. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  274. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
  275. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
  276. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
  277. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
  278. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
  279. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  280. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  281. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  282. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
  283. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
  284. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
  285. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
  286. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
  287. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  288. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  289. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
  290. package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
  291. package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
  292. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
  293. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
  294. package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
  295. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
  296. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
  297. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
  298. package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
  299. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
  300. package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
  301. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
  302. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
  303. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  304. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
  305. package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
  306. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
  307. package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
  308. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
  309. package/vendor/abseil-cpp/absl/time/clock.h +3 -0
  310. package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
  311. package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
  312. package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
  313. package/vendor/abseil-cpp/absl/time/format.cc +3 -10
  314. package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
  315. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
  316. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
  317. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
  318. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
  330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
  331. package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
  332. package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
  333. package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
  334. package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
  335. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
  336. package/vendor/abseil-cpp/absl/types/any.h +26 -4
  337. package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
  338. package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
  339. package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
  340. package/vendor/abseil-cpp/absl/types/compare.h +4 -4
  341. package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
  342. package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
  343. package/vendor/abseil-cpp/absl/types/optional.h +30 -3
  344. package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
  345. package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
  346. package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
  347. package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
  348. package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
  349. package/vendor/abseil-cpp/absl/types/span.h +19 -23
  350. package/vendor/abseil-cpp/absl/types/variant.h +75 -18
  351. package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
  352. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
  353. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
  354. package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
  355. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
  356. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
  357. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
  358. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
  359. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
  360. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
  361. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  362. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
  363. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
  364. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
  365. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
  366. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
  367. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
  368. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  369. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  370. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
@@ -41,7 +41,7 @@ struct _ {};
41
41
  template <class T>
42
42
  struct Wrapper {
43
43
  template <class U,
44
- class = absl::enable_if_t<std::is_convertible<U, T>::value>>
44
+ class = std::enable_if_t<std::is_convertible<U, T>::value>>
45
45
  Wrapper(U&&); // NOLINT
46
46
  };
47
47
 
@@ -58,7 +58,7 @@ template <class Qualifiers, class This>
58
58
  struct QualifiersForThisImpl {
59
59
  static_assert(std::is_object<This>::value, "");
60
60
  using type =
61
- absl::conditional_t<std::is_const<Qualifiers>::value, const This, This>&;
61
+ std::conditional_t<std::is_const<Qualifiers>::value, const This, This>&;
62
62
  };
63
63
 
64
64
  template <class Qualifiers, class This>
@@ -69,7 +69,7 @@ template <class Qualifiers, class This>
69
69
  struct QualifiersForThisImpl<Qualifiers&&, This> {
70
70
  static_assert(std::is_object<This>::value, "");
71
71
  using type =
72
- absl::conditional_t<std::is_const<Qualifiers>::value, const This, This>&&;
72
+ std::conditional_t<std::is_const<Qualifiers>::value, const This, This>&&;
73
73
  };
74
74
 
75
75
  template <class Qualifiers, class This>
@@ -84,39 +84,38 @@ struct GiveQualifiersToFunImpl;
84
84
  template <class T, class R, class... P>
85
85
  struct GiveQualifiersToFunImpl<T, R(P...)> {
86
86
  using type =
87
- absl::conditional_t<std::is_const<T>::value, R(P...) const, R(P...)>;
87
+ std::conditional_t<std::is_const<T>::value, R(P...) const, R(P...)>;
88
88
  };
89
89
 
90
90
  template <class T, class R, class... P>
91
91
  struct GiveQualifiersToFunImpl<T&, R(P...)> {
92
92
  using type =
93
- absl::conditional_t<std::is_const<T>::value, R(P...) const&, R(P...)&>;
93
+ std::conditional_t<std::is_const<T>::value, R(P...) const&, R(P...) &>;
94
94
  };
95
95
 
96
96
  template <class T, class R, class... P>
97
97
  struct GiveQualifiersToFunImpl<T&&, R(P...)> {
98
98
  using type =
99
- absl::conditional_t<std::is_const<T>::value, R(P...) const&&, R(P...) &&>;
99
+ std::conditional_t<std::is_const<T>::value, R(P...) const&&, R(P...) &&>;
100
100
  };
101
101
 
102
102
  template <class T, class R, class... P>
103
103
  struct GiveQualifiersToFunImpl<T, R(P...) noexcept> {
104
- using type = absl::conditional_t<std::is_const<T>::value,
105
- R(P...) const noexcept, R(P...) noexcept>;
104
+ using type = std::conditional_t<std::is_const<T>::value,
105
+ R(P...) const noexcept, R(P...) noexcept>;
106
106
  };
107
107
 
108
108
  template <class T, class R, class... P>
109
109
  struct GiveQualifiersToFunImpl<T&, R(P...) noexcept> {
110
- using type =
111
- absl::conditional_t<std::is_const<T>::value, R(P...) const & noexcept,
112
- R(P...) & noexcept>;
110
+ using type = std::conditional_t<std::is_const<T>::value,
111
+ R(P...) const & noexcept, R(P...) & noexcept>;
113
112
  };
114
113
 
115
114
  template <class T, class R, class... P>
116
115
  struct GiveQualifiersToFunImpl<T&&, R(P...) noexcept> {
117
116
  using type =
118
- absl::conditional_t<std::is_const<T>::value, R(P...) const && noexcept,
119
- R(P...) && noexcept>;
117
+ std::conditional_t<std::is_const<T>::value, R(P...) const && noexcept,
118
+ R(P...) && noexcept>;
120
119
  };
121
120
 
122
121
  template <class T, class Fun>
@@ -367,16 +366,16 @@ struct TestParams {
367
366
  }
368
367
 
369
368
  using CompatibleAnyInvocableFunType =
370
- absl::conditional_t<std::is_rvalue_reference<Qual>::value,
371
- GiveQualifiersToFun<const _&&, UnqualifiedFunType>,
372
- GiveQualifiersToFun<const _&, UnqualifiedFunType>>;
369
+ std::conditional_t<std::is_rvalue_reference<Qual>::value,
370
+ GiveQualifiersToFun<const _&&, UnqualifiedFunType>,
371
+ GiveQualifiersToFun<const _&, UnqualifiedFunType>>;
373
372
 
374
373
  using CompatibleAnyInvType = AnyInvocable<CompatibleAnyInvocableFunType>;
375
374
 
376
375
  using IncompatibleInvocable =
377
- absl::conditional_t<std::is_rvalue_reference<Qual>::value,
378
- GiveQualifiersToFun<_&, UnqualifiedFunType>(_::*),
379
- GiveQualifiersToFun<_&&, UnqualifiedFunType>(_::*)>;
376
+ std::conditional_t<std::is_rvalue_reference<Qual>::value,
377
+ GiveQualifiersToFun<_&, UnqualifiedFunType>(_::*),
378
+ GiveQualifiersToFun<_&&, UnqualifiedFunType>(_::*)>;
380
379
  };
381
380
 
382
381
  // Given a member-pointer type, this metafunction yields the target type of the
@@ -401,7 +400,7 @@ struct IsMemberSwappableImpl : std::false_type {
401
400
 
402
401
  template <class T>
403
402
  struct IsMemberSwappableImpl<
404
- T, absl::void_t<decltype(std::declval<T&>().swap(std::declval<T&>()))>>
403
+ T, std::void_t<decltype(std::declval<T&>().swap(std::declval<T&>()))>>
405
404
  : std::true_type {
406
405
  static constexpr bool kIsNothrow =
407
406
  noexcept(std::declval<T&>().swap(std::declval<T&>()));
@@ -568,7 +567,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceConstruction) {
568
567
  using AnyInvType = typename TypeParam::AnyInvType;
569
568
  using AddType = typename TypeParam::AddType;
570
569
 
571
- AnyInvType fun(absl::in_place_type<AddType>, 5);
570
+ AnyInvType fun(std::in_place_type<AddType>, 5);
572
571
 
573
572
  EXPECT_TRUE(static_cast<bool>(fun));
574
573
  EXPECT_EQ(29, TypeParam::ToThisParam(fun)(7, 8, 9).value);
@@ -578,7 +577,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceConstructionInitializerList) {
578
577
  using AnyInvType = typename TypeParam::AnyInvType;
579
578
  using AddType = typename TypeParam::AddType;
580
579
 
581
- AnyInvType fun(absl::in_place_type<AddType>, {1, 2, 3, 4}, 5);
580
+ AnyInvType fun(std::in_place_type<AddType>, {1, 2, 3, 4}, 5);
582
581
 
583
582
  EXPECT_TRUE(static_cast<bool>(fun));
584
583
  EXPECT_EQ(39, TypeParam::ToThisParam(fun)(7, 8, 9).value);
@@ -588,7 +587,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullFunPtrConstruction) {
588
587
  using AnyInvType = typename TypeParam::AnyInvType;
589
588
  using UnqualifiedFunType = typename TypeParam::UnqualifiedFunType;
590
589
 
591
- AnyInvType fun(absl::in_place_type<UnqualifiedFunType*>, nullptr);
590
+ AnyInvType fun(std::in_place_type<UnqualifiedFunType*>, nullptr);
592
591
 
593
592
  // In-place construction does not lead to empty.
594
593
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -598,7 +597,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullFunPtrConstructionValueInit) {
598
597
  using AnyInvType = typename TypeParam::AnyInvType;
599
598
  using UnqualifiedFunType = typename TypeParam::UnqualifiedFunType;
600
599
 
601
- AnyInvType fun(absl::in_place_type<UnqualifiedFunType*>);
600
+ AnyInvType fun(std::in_place_type<UnqualifiedFunType*>);
602
601
 
603
602
  // In-place construction does not lead to empty.
604
603
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -608,7 +607,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullMemFunPtrConstruction) {
608
607
  using AnyInvType = typename TypeParam::AnyInvType;
609
608
  using MemFunPtrType = typename TypeParam::MemFunPtrType;
610
609
 
611
- AnyInvType fun(absl::in_place_type<MemFunPtrType>, nullptr);
610
+ AnyInvType fun(std::in_place_type<MemFunPtrType>, nullptr);
612
611
 
613
612
  // In-place construction does not lead to empty.
614
613
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -618,7 +617,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullMemFunPtrConstructionValueInit) {
618
617
  using AnyInvType = typename TypeParam::AnyInvType;
619
618
  using MemFunPtrType = typename TypeParam::MemFunPtrType;
620
619
 
621
- AnyInvType fun(absl::in_place_type<MemFunPtrType>);
620
+ AnyInvType fun(std::in_place_type<MemFunPtrType>);
622
621
 
623
622
  // In-place construction does not lead to empty.
624
623
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -628,7 +627,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullMemObjPtrConstruction) {
628
627
  using UnaryAnyInvType = typename TypeParam::UnaryAnyInvType;
629
628
  using MemObjPtrType = typename TypeParam::MemObjPtrType;
630
629
 
631
- UnaryAnyInvType fun(absl::in_place_type<MemObjPtrType>, nullptr);
630
+ UnaryAnyInvType fun(std::in_place_type<MemObjPtrType>, nullptr);
632
631
 
633
632
  // In-place construction does not lead to empty.
634
633
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -638,7 +637,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceNullMemObjPtrConstructionValueInit) {
638
637
  using UnaryAnyInvType = typename TypeParam::UnaryAnyInvType;
639
638
  using MemObjPtrType = typename TypeParam::MemObjPtrType;
640
639
 
641
- UnaryAnyInvType fun(absl::in_place_type<MemObjPtrType>);
640
+ UnaryAnyInvType fun(std::in_place_type<MemObjPtrType>);
642
641
 
643
642
  // In-place construction does not lead to empty.
644
643
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -648,7 +647,7 @@ TYPED_TEST_P(AnyInvTestBasic, InPlaceVoidCovarianceConstruction) {
648
647
  using VoidAnyInvType = typename TypeParam::VoidAnyInvType;
649
648
  using AddType = typename TypeParam::AddType;
650
649
 
651
- VoidAnyInvType fun(absl::in_place_type<AddType>, 5);
650
+ VoidAnyInvType fun(std::in_place_type<AddType>, 5);
652
651
 
653
652
  EXPECT_TRUE(static_cast<bool>(fun));
654
653
  }
@@ -668,7 +667,7 @@ TYPED_TEST_P(AnyInvTestBasic, MoveConstructionFromNonEmpty) {
668
667
  using AnyInvType = typename TypeParam::AnyInvType;
669
668
  using AddType = typename TypeParam::AddType;
670
669
 
671
- AnyInvType source_fun(absl::in_place_type<AddType>, 5);
670
+ AnyInvType source_fun(std::in_place_type<AddType>, 5);
672
671
  AnyInvType fun(std::move(source_fun));
673
672
 
674
673
  EXPECT_TRUE(static_cast<bool>(fun));
@@ -693,7 +692,7 @@ TYPED_TEST_P(AnyInvTestBasic, ComparisonWithNullptrNonempty) {
693
692
  using AnyInvType = typename TypeParam::AnyInvType;
694
693
  using AddType = typename TypeParam::AddType;
695
694
 
696
- AnyInvType fun(absl::in_place_type<AddType>, 5);
695
+ AnyInvType fun(std::in_place_type<AddType>, 5);
697
696
 
698
697
  EXPECT_FALSE(fun == nullptr);
699
698
  EXPECT_FALSE(nullptr == fun);
@@ -730,7 +729,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, MoveAssignEmptyLhsNonemptyRhs) {
730
729
  using AnyInvType = typename TypeParam::AnyInvType;
731
730
  using AddType = typename TypeParam::AddType;
732
731
 
733
- AnyInvType source_fun(absl::in_place_type<AddType>, 5);
732
+ AnyInvType source_fun(std::in_place_type<AddType>, 5);
734
733
  AnyInvType fun;
735
734
 
736
735
  fun = std::move(source_fun);
@@ -744,7 +743,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, MoveAssignNonemptyEmptyLhsRhs) {
744
743
  using AddType = typename TypeParam::AddType;
745
744
 
746
745
  AnyInvType source_fun;
747
- AnyInvType fun(absl::in_place_type<AddType>, 5);
746
+ AnyInvType fun(std::in_place_type<AddType>, 5);
748
747
 
749
748
  fun = std::move(source_fun);
750
749
 
@@ -755,8 +754,8 @@ TYPED_TEST_P(AnyInvTestCombinatoric, MoveAssignNonemptyLhsNonemptyRhs) {
755
754
  using AnyInvType = typename TypeParam::AnyInvType;
756
755
  using AddType = typename TypeParam::AddType;
757
756
 
758
- AnyInvType source_fun(absl::in_place_type<AddType>, 5);
759
- AnyInvType fun(absl::in_place_type<AddType>, 20);
757
+ AnyInvType source_fun(std::in_place_type<AddType>, 5);
758
+ AnyInvType fun(std::in_place_type<AddType>, 20);
760
759
 
761
760
  fun = std::move(source_fun);
762
761
 
@@ -777,7 +776,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SelfMoveAssignNonempty) {
777
776
  using AnyInvType = typename TypeParam::AnyInvType;
778
777
  using AddType = typename TypeParam::AddType;
779
778
 
780
- AnyInvType source_fun(absl::in_place_type<AddType>, 5);
779
+ AnyInvType source_fun(std::in_place_type<AddType>, 5);
781
780
  source_fun = std::move(source_fun);
782
781
 
783
782
  // This space intentionally left blank.
@@ -1028,7 +1027,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapEmptyLhsNonemptyRhs) {
1028
1027
  // Swap idiom
1029
1028
  {
1030
1029
  AnyInvType fun;
1031
- AnyInvType other(absl::in_place_type<AddType>, 5);
1030
+ AnyInvType other(std::in_place_type<AddType>, 5);
1032
1031
 
1033
1032
  using std::swap;
1034
1033
  swap(fun, other);
@@ -1045,7 +1044,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapEmptyLhsNonemptyRhs) {
1045
1044
  // Member swap
1046
1045
  {
1047
1046
  AnyInvType fun;
1048
- AnyInvType other(absl::in_place_type<AddType>, 5);
1047
+ AnyInvType other(std::in_place_type<AddType>, 5);
1049
1048
 
1050
1049
  fun.swap(other);
1051
1050
 
@@ -1064,7 +1063,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapNonemptyLhsEmptyRhs) {
1064
1063
 
1065
1064
  // Swap idiom
1066
1065
  {
1067
- AnyInvType fun(absl::in_place_type<AddType>, 5);
1066
+ AnyInvType fun(std::in_place_type<AddType>, 5);
1068
1067
  AnyInvType other;
1069
1068
 
1070
1069
  using std::swap;
@@ -1081,7 +1080,7 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapNonemptyLhsEmptyRhs) {
1081
1080
 
1082
1081
  // Member swap
1083
1082
  {
1084
- AnyInvType fun(absl::in_place_type<AddType>, 5);
1083
+ AnyInvType fun(std::in_place_type<AddType>, 5);
1085
1084
  AnyInvType other;
1086
1085
 
1087
1086
  fun.swap(other);
@@ -1101,8 +1100,8 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapNonemptyLhsNonemptyRhs) {
1101
1100
 
1102
1101
  // Swap idiom
1103
1102
  {
1104
- AnyInvType fun(absl::in_place_type<AddType>, 5);
1105
- AnyInvType other(absl::in_place_type<AddType>, 6);
1103
+ AnyInvType fun(std::in_place_type<AddType>, 5);
1104
+ AnyInvType other(std::in_place_type<AddType>, 6);
1106
1105
 
1107
1106
  using std::swap;
1108
1107
  swap(fun, other);
@@ -1119,8 +1118,8 @@ TYPED_TEST_P(AnyInvTestCombinatoric, SwapNonemptyLhsNonemptyRhs) {
1119
1118
 
1120
1119
  // Member swap
1121
1120
  {
1122
- AnyInvType fun(absl::in_place_type<AddType>, 5);
1123
- AnyInvType other(absl::in_place_type<AddType>, 6);
1121
+ AnyInvType fun(std::in_place_type<AddType>, 5);
1122
+ AnyInvType other(std::in_place_type<AddType>, 6);
1124
1123
 
1125
1124
  fun.swap(other);
1126
1125
 
@@ -1284,7 +1283,7 @@ TYPED_TEST_P(AnyInvTestNonRvalue, NonMoveableResultType) {
1284
1283
  // Just like plain functors, it should work fine to use an AnyInvocable that
1285
1284
  // returns the non-moveable type.
1286
1285
  using UnqualifiedFun =
1287
- absl::conditional_t<TypeParam::kIsNoexcept, Result() noexcept, Result()>;
1286
+ std::conditional_t<TypeParam::kIsNoexcept, Result() noexcept, Result()>;
1288
1287
 
1289
1288
  using Fun =
1290
1289
  GiveQualifiersToFun<typename TypeParam::Qualifiers, UnqualifiedFun>;
@@ -1364,7 +1363,7 @@ TYPED_TEST_P(AnyInvTestRvalue, NonMoveableResultType) {
1364
1363
  // Just like plain functors, it should work fine to use an AnyInvocable that
1365
1364
  // returns the non-moveable type.
1366
1365
  using UnqualifiedFun =
1367
- absl::conditional_t<TypeParam::kIsNoexcept, Result() noexcept, Result()>;
1366
+ std::conditional_t<TypeParam::kIsNoexcept, Result() noexcept, Result()>;
1368
1367
 
1369
1368
  using Fun =
1370
1369
  GiveQualifiersToFun<typename TypeParam::Qualifiers, UnqualifiedFun>;
@@ -1384,7 +1383,7 @@ TYPED_TEST_P(AnyInvTestRvalue, NonConstCrashesOnSecondCall) {
1384
1383
  using AnyInvType = typename TypeParam::AnyInvType;
1385
1384
  using AddType = typename TypeParam::AddType;
1386
1385
 
1387
- AnyInvType fun(absl::in_place_type<AddType>, 5);
1386
+ AnyInvType fun(std::in_place_type<AddType>, 5);
1388
1387
 
1389
1388
  EXPECT_TRUE(static_cast<bool>(fun));
1390
1389
  std::move(fun)(7, 8, 9);
@@ -0,0 +1,79 @@
1
+ // Copyright 2026 The Abseil Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // -----------------------------------------------------------------------------
16
+ // File: bind_back.h
17
+ // -----------------------------------------------------------------------------
18
+ //
19
+ // `absl::bind_back()` returns a functor by binding a number of arguments to
20
+ // the back of a provided (usually more generic) functor. Unlike `std::bind`,
21
+ // it does not require the use of argument placeholders. The simpler syntax of
22
+ // `absl::bind_back()` allows you to avoid known misuses with `std::bind()`.
23
+ //
24
+ // `absl::bind_back()` is meant as a drop-in replacement for C++23's
25
+ // `std::bind_back()`, which similarly resolves these issues with
26
+ // `std::bind()`. Both `bind_back()` alternatives, unlike `std::bind()`, allow
27
+ // partial function application. (See
28
+ // https://en.wikipedia.org/wiki/Partial_application).
29
+
30
+ #ifndef ABSL_FUNCTIONAL_BIND_BACK_H_
31
+ #define ABSL_FUNCTIONAL_BIND_BACK_H_
32
+
33
+ #ifdef __has_include
34
+ #if __has_include(<version>)
35
+ #include <version>
36
+ #endif
37
+ #endif
38
+
39
+ #if defined(__cpp_lib_bind_back) && __cpp_lib_bind_back >= 202202L
40
+ #include <functional> // For std::bind_back.
41
+ #endif
42
+
43
+ #include <utility>
44
+
45
+ #include "absl/base/config.h"
46
+ #include "absl/functional/internal/back_binder.h"
47
+ #include "absl/utility/utility.h"
48
+
49
+ namespace absl {
50
+ ABSL_NAMESPACE_BEGIN
51
+
52
+ // bind_back()
53
+ //
54
+ // Binds the last N arguments of an invocable object and stores them by value.
55
+ //
56
+ // Like `std::bind()`, `absl::bind_back()` is implicitly convertible to
57
+ // `std::function`. In particular, it may be used as a simpler replacement for
58
+ // `std::bind()` in most cases, as it does not require placeholders to be
59
+ // specified. More importantly, it provides more reliable correctness guarantees
60
+ // than `std::bind()`; while `std::bind()` will silently ignore passing more
61
+ // parameters than expected, for example, `absl::bind_back()` will report such
62
+ // mis-uses as errors. In C++23, `absl::bind_back` is replaced by
63
+ // `std::bind_back`.
64
+ //
65
+ #if defined(__cpp_lib_bind_back) && __cpp_lib_bind_back >= 202202L
66
+ using std::bind_back;
67
+ #else
68
+ template <class F, class... BoundArgs>
69
+ constexpr functional_internal::bind_back_t<F, BoundArgs...> bind_back(
70
+ F&& func, BoundArgs&&... args) {
71
+ return functional_internal::bind_back_t<F, BoundArgs...>(
72
+ std::in_place, std::forward<F>(func), std::forward<BoundArgs>(args)...);
73
+ }
74
+ #endif
75
+
76
+ ABSL_NAMESPACE_END
77
+ } // namespace absl
78
+
79
+ #endif // ABSL_FUNCTIONAL_BIND_BACK_H_
@@ -0,0 +1,237 @@
1
+ // Copyright 2026 The Abseil Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "absl/functional/bind_back.h"
16
+
17
+ #include <stddef.h>
18
+
19
+ #include <functional>
20
+ #include <memory>
21
+ #include <string>
22
+ #include <utility>
23
+
24
+ #include "gmock/gmock.h"
25
+ #include "gtest/gtest.h"
26
+ #include "absl/memory/memory.h"
27
+
28
+ namespace {
29
+
30
+ char CharAt(const char* s, size_t index) { return s[index]; }
31
+
32
+ TEST(BindTest, Basics) {
33
+ EXPECT_EQ('C', absl::bind_back(CharAt)("ABC", 2));
34
+ EXPECT_EQ('C', absl::bind_back(CharAt, 2)("ABC"));
35
+ EXPECT_EQ('C', absl::bind_back(CharAt, "ABC", 2)());
36
+ }
37
+
38
+ TEST(BindTest, Lambda) {
39
+ auto lambda = [](int x, int y, int z) { return x + y + z; };
40
+ EXPECT_EQ(6, absl::bind_back(lambda)(1, 2, 3));
41
+ EXPECT_EQ(6, absl::bind_back(lambda, 3)(1, 2));
42
+ EXPECT_EQ(6, absl::bind_back(lambda, 2, 3)(1));
43
+ EXPECT_EQ(6, absl::bind_back(lambda, 1, 2, 3)());
44
+ }
45
+
46
+ struct Functor {
47
+ std::string operator()() & { return "&"; }
48
+ std::string operator()() const& { return "const&"; }
49
+ std::string operator()() && { return "&&"; }
50
+ std::string operator()() const&& { return "const&&"; }
51
+ };
52
+
53
+ TEST(BindTest, PerfectForwardingOfBoundArgs) {
54
+ auto f = absl::bind_back(Functor());
55
+ const auto& cf = f;
56
+ EXPECT_EQ("&", f());
57
+ EXPECT_EQ("const&", cf());
58
+ EXPECT_EQ("&&", std::move(f)());
59
+ EXPECT_EQ("const&&", std::move(cf)());
60
+ }
61
+
62
+ struct ArgDescribe {
63
+ std::string operator()(int&) const { return "&"; } // NOLINT
64
+ std::string operator()(const int&) const { return "const&"; } // NOLINT
65
+ std::string operator()(int&&) const { return "&&"; }
66
+ std::string operator()(const int&&) const { return "const&&"; }
67
+ };
68
+
69
+ TEST(BindTest, PerfectForwardingOfFreeArgs) {
70
+ ArgDescribe f;
71
+ int i;
72
+ EXPECT_EQ("&", absl::bind_back(f)(static_cast<int&>(i)));
73
+ EXPECT_EQ("const&", absl::bind_back(f)(static_cast<const int&>(i)));
74
+ EXPECT_EQ("&&", absl::bind_back(f)(static_cast<int&&>(i)));
75
+ EXPECT_EQ("const&&", absl::bind_back(f)(static_cast<const int&&>(i)));
76
+ }
77
+
78
+ struct NonCopyableFunctor {
79
+ NonCopyableFunctor() = default;
80
+ NonCopyableFunctor(const NonCopyableFunctor&) = delete;
81
+ NonCopyableFunctor& operator=(const NonCopyableFunctor&) = delete;
82
+ const NonCopyableFunctor* operator()() const { return this; }
83
+ };
84
+
85
+ TEST(BindTest, RefToFunctor) {
86
+ // It won't copy/move the functor and use the original object.
87
+ NonCopyableFunctor ncf;
88
+ auto bound_ncf = absl::bind_back(std::ref(ncf));
89
+ auto bound_ncf_copy = bound_ncf;
90
+ EXPECT_EQ(&ncf, bound_ncf_copy());
91
+ }
92
+
93
+ struct Struct {
94
+ std::string value;
95
+ };
96
+
97
+ TEST(BindTest, StoreByCopy) {
98
+ Struct s = {"hello"};
99
+ auto f = absl::bind_back(&Struct::value, s);
100
+ auto g = f;
101
+ EXPECT_EQ("hello", f());
102
+ EXPECT_EQ("hello", g());
103
+ EXPECT_NE(&s.value, &f());
104
+ EXPECT_NE(&s.value, &g());
105
+ EXPECT_NE(&g(), &f());
106
+ }
107
+
108
+ struct NonCopyable {
109
+ explicit NonCopyable(const std::string& s) : value(s) {}
110
+ NonCopyable(const NonCopyable&) = delete;
111
+ NonCopyable& operator=(const NonCopyable&) = delete;
112
+
113
+ std::string value;
114
+ };
115
+
116
+ const std::string& GetNonCopyableValue(const NonCopyable& n) { return n.value; }
117
+
118
+ TEST(BindTest, StoreByRef) {
119
+ NonCopyable s("hello");
120
+ auto f = absl::bind_back(&GetNonCopyableValue, std::ref(s));
121
+ EXPECT_EQ("hello", f());
122
+ EXPECT_EQ(&s.value, &f());
123
+ auto g = std::move(f); // NOLINT
124
+ EXPECT_EQ("hello", g());
125
+ EXPECT_EQ(&s.value, &g());
126
+ s.value = "goodbye";
127
+ EXPECT_EQ("goodbye", g());
128
+ }
129
+
130
+ TEST(BindTest, StoreByCRef) {
131
+ NonCopyable s("hello");
132
+ auto f = absl::bind_back(&GetNonCopyableValue, std::cref(s));
133
+ EXPECT_EQ("hello", f());
134
+ EXPECT_EQ(&s.value, &f());
135
+ auto g = std::move(f); // NOLINT
136
+ EXPECT_EQ("hello", g());
137
+ EXPECT_EQ(&s.value, &g());
138
+ s.value = "goodbye";
139
+ EXPECT_EQ("goodbye", g());
140
+ }
141
+
142
+ const std::string& GetNonCopyableValueByWrapper(
143
+ std::reference_wrapper<NonCopyable> n) {
144
+ return n.get().value;
145
+ }
146
+
147
+ TEST(BindTest, StoreByRefInvokeByWrapper) {
148
+ NonCopyable s("hello");
149
+ auto f = absl::bind_back(GetNonCopyableValueByWrapper, std::ref(s));
150
+ EXPECT_EQ("hello", f());
151
+ EXPECT_EQ(&s.value, &f());
152
+ auto g = std::move(f);
153
+ EXPECT_EQ("hello", g());
154
+ EXPECT_EQ(&s.value, &g());
155
+ s.value = "goodbye";
156
+ EXPECT_EQ("goodbye", g());
157
+ }
158
+
159
+ TEST(BindTest, StoreByPointer) {
160
+ NonCopyable s("hello");
161
+ auto f = absl::bind_back(&NonCopyable::value, &s);
162
+ EXPECT_EQ("hello", f());
163
+ EXPECT_EQ(&s.value, &f());
164
+ auto g = std::move(f);
165
+ EXPECT_EQ("hello", g());
166
+ EXPECT_EQ(&s.value, &g());
167
+ }
168
+
169
+ struct MyStruct {
170
+ int x;
171
+ int Add(int y) const { return x + y; }
172
+ };
173
+
174
+ TEST(BindTest, MemberFunctionFreeInstance) {
175
+ MyStruct s{10};
176
+ auto f = absl::bind_back(&MyStruct::Add, 5);
177
+ EXPECT_EQ(f(s), 15);
178
+ }
179
+
180
+ int Sink(std::unique_ptr<int> p) { return *p; }
181
+
182
+ std::unique_ptr<int> Factory(int n) { return std::make_unique<int>(n); }
183
+
184
+ TEST(BindTest, NonCopyableArg) {
185
+ EXPECT_EQ(42, absl::bind_back(Sink)(std::make_unique<int>(42)));
186
+ EXPECT_EQ(42, absl::bind_back(Sink, std::make_unique<int>(42))());
187
+ }
188
+
189
+ TEST(BindTest, NonCopyableResult) {
190
+ EXPECT_THAT(absl::bind_back(Factory)(42), ::testing::Pointee(42));
191
+ EXPECT_THAT(absl::bind_back(Factory, 42)(), ::testing::Pointee(42));
192
+ }
193
+
194
+ // is_copy_constructible<FalseCopyable<unique_ptr<T>> is true but an attempt to
195
+ // instantiate the copy constructor leads to a compile error. This is similar
196
+ // to how standard containers behave.
197
+ template <class T>
198
+ struct FalseCopyable {
199
+ FalseCopyable() = default;
200
+ FalseCopyable(const FalseCopyable& other) : m(other.m) {}
201
+ FalseCopyable(FalseCopyable&& other) : m(std::move(other.m)) {}
202
+ T m;
203
+ };
204
+
205
+ int GetMember(FalseCopyable<std::unique_ptr<int>> x) { return *x.m; }
206
+
207
+ TEST(BindTest, WrappedMoveOnly) {
208
+ FalseCopyable<std::unique_ptr<int>> x;
209
+ x.m = std::make_unique<int>(42);
210
+ auto f = absl::bind_back(&GetMember, std::move(x));
211
+ EXPECT_EQ(42, std::move(f)());
212
+ }
213
+
214
+ int Plus(int a, int b) { return a + b; }
215
+
216
+ TEST(BindTest, ConstExpr) {
217
+ constexpr auto f = absl::bind_back(CharAt);
218
+ EXPECT_EQ(f("ABC", 1), 'B');
219
+ static constexpr int five = 5;
220
+ constexpr auto plus5 = absl::bind_back(Plus, five);
221
+ EXPECT_EQ(plus5(1), 6);
222
+
223
+ static constexpr char data[] = "DEF";
224
+ constexpr auto g = absl::bind_back(CharAt, 1);
225
+ EXPECT_EQ(g(data), 'E');
226
+ }
227
+
228
+ struct ManglingCall {
229
+ int operator()(int, double, std::string) const { return 0; }
230
+ };
231
+
232
+ TEST(BindTest, Mangling) {
233
+ // We just want to generate a particular instantiation to see its mangling.
234
+ absl::bind_back(ManglingCall{}, 3.3, "A")(1);
235
+ }
236
+
237
+ } // namespace
@@ -30,6 +30,12 @@
30
30
  #ifndef ABSL_FUNCTIONAL_BIND_FRONT_H_
31
31
  #define ABSL_FUNCTIONAL_BIND_FRONT_H_
32
32
 
33
+ #ifdef __has_include
34
+ #if __has_include(<version>)
35
+ #include <version>
36
+ #endif
37
+ #endif
38
+
33
39
  #if defined(__cpp_lib_bind_front) && __cpp_lib_bind_front >= 201907L
34
40
  #include <functional> // For std::bind_front.
35
41
  #endif // defined(__cpp_lib_bind_front) && __cpp_lib_bind_front >= 201907L
@@ -184,7 +190,7 @@ template <class F, class... BoundArgs>
184
190
  constexpr functional_internal::bind_front_t<F, BoundArgs...> bind_front(
185
191
  F&& func, BoundArgs&&... args) {
186
192
  return functional_internal::bind_front_t<F, BoundArgs...>(
187
- absl::in_place, std::forward<F>(func), std::forward<BoundArgs>(args)...);
193
+ std::in_place, std::forward<F>(func), std::forward<BoundArgs>(args)...);
188
194
  }
189
195
  #endif // defined(__cpp_lib_bind_front) && __cpp_lib_bind_front >= 201907L
190
196
 
@@ -169,11 +169,11 @@ int Sink(std::unique_ptr<int> p) {
169
169
  return *p;
170
170
  }
171
171
 
172
- std::unique_ptr<int> Factory(int n) { return absl::make_unique<int>(n); }
172
+ std::unique_ptr<int> Factory(int n) { return std::make_unique<int>(n); }
173
173
 
174
174
  TEST(BindTest, NonCopyableArg) {
175
- EXPECT_EQ(42, absl::bind_front(Sink)(absl::make_unique<int>(42)));
176
- EXPECT_EQ(42, absl::bind_front(Sink, absl::make_unique<int>(42))());
175
+ EXPECT_EQ(42, absl::bind_front(Sink)(std::make_unique<int>(42)));
176
+ EXPECT_EQ(42, absl::bind_front(Sink, std::make_unique<int>(42))());
177
177
  }
178
178
 
179
179
  TEST(BindTest, NonCopyableResult) {
@@ -196,7 +196,7 @@ int GetMember(FalseCopyable<std::unique_ptr<int>> x) { return *x.m; }
196
196
 
197
197
  TEST(BindTest, WrappedMoveOnly) {
198
198
  FalseCopyable<std::unique_ptr<int>> x;
199
- x.m = absl::make_unique<int>(42);
199
+ x.m = std::make_unique<int>(42);
200
200
  auto f = absl::bind_front(&GetMember, std::move(x));
201
201
  EXPECT_EQ(42, std::move(f)());
202
202
  }