re2 1.22.2 → 1.23.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 (495) hide show
  1. package/README.md +60 -4
  2. package/binding.gyp +5 -1
  3. package/lib/addon.cc +4 -0
  4. package/lib/new.cc +1 -246
  5. package/lib/pattern.cc +252 -0
  6. package/lib/pattern.h +10 -0
  7. package/lib/set.cc +777 -0
  8. package/lib/wrapped_re2_set.h +42 -0
  9. package/package.json +21 -9
  10. package/re2.d.ts +46 -9
  11. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
  12. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
  13. package/vendor/abseil-cpp/CMake/README.md +2 -2
  14. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  15. package/vendor/abseil-cpp/MODULE.bazel +6 -9
  16. package/vendor/abseil-cpp/README.md +6 -8
  17. package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
  18. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
  19. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
  20. package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
  21. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
  22. package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
  23. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
  24. package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
  25. package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
  26. package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
  27. package/vendor/abseil-cpp/absl/base/config.h +22 -129
  28. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
  29. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  30. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
  31. package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  32. package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  33. package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
  34. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  35. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
  36. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
  37. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
  38. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  39. package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
  40. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
  41. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
  42. package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
  43. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
  44. package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
  45. package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
  46. package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  47. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
  48. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  49. package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
  50. package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
  51. package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
  52. package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
  53. package/vendor/abseil-cpp/absl/base/options.h +3 -80
  54. package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
  55. package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
  56. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
  57. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
  58. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
  59. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  60. package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
  61. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  62. package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
  63. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
  64. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
  65. package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
  68. package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
  69. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
  70. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
  71. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
  72. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
  73. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
  74. package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
  75. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
  76. package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
  77. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  78. package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
  79. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  80. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
  81. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
  82. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
  83. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
  84. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
  87. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
  88. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
  89. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
  90. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
  91. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
  92. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
  93. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
  94. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
  95. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
  96. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  97. package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
  101. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
  102. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
  103. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
  104. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
  105. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
  106. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
  107. package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
  108. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
  109. package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
  110. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
  111. package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
  112. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
  113. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
  114. package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
  115. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
  116. package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
  117. package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
  118. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
  119. package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
  120. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
  121. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  122. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  123. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  124. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
  125. package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
  126. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
  127. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
  128. package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  129. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  130. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  131. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  132. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  133. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
  134. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  135. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  136. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  137. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  138. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  139. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  140. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  141. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  142. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  143. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
  144. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  145. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
  146. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  147. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
  148. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
  149. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  150. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  151. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
  152. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
  153. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  154. package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
  155. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  156. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
  157. package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
  158. package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  159. package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
  160. package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
  161. package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
  162. package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
  163. package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
  164. package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
  165. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
  166. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
  167. package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
  168. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
  169. package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
  170. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
  171. package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
  172. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
  173. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  174. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  175. package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
  176. package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
  177. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
  178. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
  179. package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
  180. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
  181. package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
  182. package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
  183. package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
  184. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
  185. package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
  186. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
  187. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
  188. package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
  189. package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
  190. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
  191. package/vendor/abseil-cpp/absl/log/check.h +2 -1
  192. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
  193. package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
  194. package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
  195. package/vendor/abseil-cpp/absl/log/globals.h +4 -5
  196. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
  197. package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  198. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
  199. package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
  200. package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  201. package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
  202. package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
  203. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  204. package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
  205. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  206. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  207. package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
  208. package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
  209. package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
  210. package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
  211. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
  212. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  213. package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
  214. package/vendor/abseil-cpp/absl/log/log.h +48 -35
  215. package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
  216. package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
  217. package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
  218. package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
  219. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
  220. package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  221. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
  222. package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
  223. package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
  224. package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
  225. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  226. package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
  227. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
  228. package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
  229. package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
  230. package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
  231. package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
  232. package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
  233. package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
  234. package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
  235. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
  236. package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
  237. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
  238. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
  239. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
  240. package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
  241. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  242. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
  243. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
  244. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  245. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
  246. package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
  247. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
  248. package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
  249. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  250. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
  251. package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
  252. package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  253. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
  254. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  255. package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
  256. package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
  257. package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
  258. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
  259. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  260. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
  261. package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
  262. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  263. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  264. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  265. package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
  266. package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
  267. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
  268. package/vendor/abseil-cpp/absl/random/random.h +88 -53
  269. package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  270. package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
  271. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  272. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  273. package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
  274. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
  275. package/vendor/abseil-cpp/absl/status/status.cc +4 -8
  276. package/vendor/abseil-cpp/absl/status/status.h +8 -8
  277. package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
  278. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
  279. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  280. package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
  281. package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
  282. package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
  283. package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
  284. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
  285. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
  286. package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
  287. package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
  288. package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
  289. package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
  290. package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
  291. package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
  292. package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
  293. package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
  294. package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
  295. package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  296. package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  297. package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
  298. package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
  299. package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
  300. package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
  301. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
  302. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
  303. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  304. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
  305. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
  306. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  307. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  308. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
  309. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
  310. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
  311. package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
  312. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
  313. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  314. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  315. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
  316. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  317. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
  318. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  319. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  320. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  321. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
  322. package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  323. package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  324. package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  325. package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
  326. package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
  327. package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
  328. package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
  329. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
  330. package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
  331. package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
  332. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
  333. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
  334. package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
  335. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
  336. package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
  337. package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
  338. package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
  339. package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
  340. package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
  341. package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
  342. package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
  343. package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
  344. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
  345. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
  346. package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
  347. package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
  348. package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
  349. package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
  350. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
  351. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
  352. package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  353. package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
  354. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  355. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  356. package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  357. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  358. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
  359. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
  360. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  361. package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  362. package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  363. package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  364. package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
  365. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  366. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
  367. package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  368. package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
  369. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
  370. package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
  371. package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
  372. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
  373. package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
  374. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  375. package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
  376. package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
  377. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
  378. package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
  379. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
  380. package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
  381. package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
  382. package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
  383. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
  384. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  385. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  386. package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
  387. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
  388. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
  389. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
  390. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
  391. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  392. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
  393. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  394. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
  395. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  396. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  397. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
  398. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
  399. package/vendor/abseil-cpp/absl/time/time.h +24 -18
  400. package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
  401. package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
  402. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
  403. package/vendor/abseil-cpp/absl/types/any.h +9 -484
  404. package/vendor/abseil-cpp/absl/types/optional.h +7 -747
  405. package/vendor/abseil-cpp/absl/types/span.h +46 -19
  406. package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
  407. package/vendor/abseil-cpp/absl/types/variant.h +5 -784
  408. package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
  409. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
  410. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
  411. package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
  412. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
  413. package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
  414. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
  415. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
  416. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
  417. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
  418. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
  419. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  420. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
  421. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
  422. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
  423. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
  424. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
  425. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
  426. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
  427. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
  428. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
  429. package/vendor/re2/.bazelrc +4 -4
  430. package/vendor/re2/.bcr/metadata.template.json +16 -0
  431. package/vendor/re2/.bcr/presubmit.yml +57 -0
  432. package/vendor/re2/.bcr/source.template.json +5 -0
  433. package/vendor/re2/.github/bazel.sh +1 -7
  434. package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
  435. package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
  436. package/vendor/re2/.github/workflows/ci.yml +5 -6
  437. package/vendor/re2/.github/workflows/pages.yml +3 -3
  438. package/vendor/re2/.github/workflows/python.yml +29 -24
  439. package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
  440. package/vendor/re2/.github/workflows/release.yml +15 -4
  441. package/vendor/re2/BUILD.bazel +25 -0
  442. package/vendor/re2/CMakeLists.txt +100 -85
  443. package/vendor/re2/CONTRIBUTING.md +0 -1
  444. package/vendor/re2/MODULE.bazel +10 -10
  445. package/vendor/re2/Makefile +1 -1
  446. package/vendor/re2/README.md +259 -0
  447. package/vendor/re2/python/BUILD.bazel +8 -0
  448. package/vendor/re2/python/re2.py +1 -1
  449. package/vendor/re2/python/re2_test.py +6 -0
  450. package/vendor/re2/python/setup.py +3 -3
  451. package/vendor/re2/re2/bitmap256.cc +3 -4
  452. package/vendor/re2/re2/bitstate.cc +15 -10
  453. package/vendor/re2/re2/dfa.cc +1 -2
  454. package/vendor/re2/re2/parse.cc +3 -4
  455. package/vendor/re2/re2/prog.cc +1 -2
  456. package/vendor/re2/re2/prog.h +1 -0
  457. package/vendor/re2/re2/re2.cc +5 -0
  458. package/vendor/re2/re2/re2.h +9 -9
  459. package/vendor/re2/re2/set.cc +6 -0
  460. package/vendor/re2/re2/set.h +5 -0
  461. package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
  462. package/vendor/re2/re2/testing/re2_test.cc +8 -0
  463. package/vendor/re2/re2/testing/set_test.cc +5 -0
  464. package/vendor/re2/re2/walker-inl.h +1 -1
  465. package/vendor/abseil-cpp/WORKSPACE +0 -76
  466. package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
  467. package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
  468. package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  469. package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
  470. package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
  471. package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
  472. package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
  473. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
  474. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
  475. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  476. package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
  477. package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
  478. package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
  479. package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
  480. package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
  481. package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  482. package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  483. package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  484. package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  485. package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
  486. package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
  487. package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
  488. package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
  489. package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
  490. package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
  491. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
  492. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
  493. package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
  494. package/vendor/re2/.github/workflows/pr.yml +0 -34
  495. package/vendor/re2/README +0 -47
@@ -65,8 +65,8 @@
65
65
 
66
66
  #include "absl/base/attributes.h"
67
67
  #include "absl/base/config.h"
68
- #include "absl/base/internal/invoke.h"
69
68
  #include "absl/base/macros.h"
69
+ #include "absl/base/nullability.h"
70
70
  #include "absl/base/optimization.h"
71
71
  #include "absl/meta/type_traits.h"
72
72
  #include "absl/utility/utility.h"
@@ -74,18 +74,9 @@
74
74
  namespace absl {
75
75
  ABSL_NAMESPACE_BEGIN
76
76
 
77
- // Helper macro used to prevent spelling `noexcept` in language versions older
78
- // than C++17, where it is not part of the type system, in order to avoid
79
- // compilation failures and internal compiler errors.
80
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
81
- #define ABSL_INTERNAL_NOEXCEPT_SPEC(noex) noexcept(noex)
82
- #else
83
- #define ABSL_INTERNAL_NOEXCEPT_SPEC(noex)
84
- #endif
85
-
86
77
  // Defined in functional/any_invocable.h
87
78
  template <class Sig>
88
- class AnyInvocable;
79
+ class ABSL_NULLABILITY_COMPATIBLE AnyInvocable;
89
80
 
90
81
  namespace internal_any_invocable {
91
82
 
@@ -107,44 +98,30 @@ struct IsAnyInvocable<AnyInvocable<Sig>> : std::true_type {};
107
98
  //
108
99
  ////////////////////////////////////////////////////////////////////////////////
109
100
 
110
- // A type trait that tells us whether or not a target function type should be
101
+ // A metafunction that tells us whether or not a target function type should be
111
102
  // stored locally in the small object optimization storage
112
103
  template <class T>
113
- using IsStoredLocally = std::integral_constant<
114
- bool, sizeof(T) <= kStorageSize && alignof(T) <= kAlignment &&
115
- kAlignment % alignof(T) == 0 &&
116
- std::is_nothrow_move_constructible<T>::value>;
104
+ constexpr bool IsStoredLocally() {
105
+ if constexpr (sizeof(T) <= kStorageSize && alignof(T) <= kAlignment &&
106
+ kAlignment % alignof(T) == 0) {
107
+ return std::is_nothrow_move_constructible<T>::value;
108
+ }
109
+ return false;
110
+ }
117
111
 
118
112
  // An implementation of std::remove_cvref_t of C++20.
119
113
  template <class T>
120
114
  using RemoveCVRef =
121
115
  typename std::remove_cv<typename std::remove_reference<T>::type>::type;
122
116
 
123
- ////////////////////////////////////////////////////////////////////////////////
124
- //
125
- // An implementation of the C++ standard INVOKE<R> pseudo-macro, operation is
126
- // equivalent to std::invoke except that it forces an implicit conversion to the
127
- // specified return type. If "R" is void, the function is executed and the
128
- // return value is simply ignored.
129
- template <class ReturnType, class F, class... P,
130
- typename = absl::enable_if_t<std::is_void<ReturnType>::value>>
131
- void InvokeR(F&& f, P&&... args) {
132
- absl::base_internal::invoke(std::forward<F>(f), std::forward<P>(args)...);
133
- }
134
-
135
- template <class ReturnType, class F, class... P,
136
- absl::enable_if_t<!std::is_void<ReturnType>::value, int> = 0>
117
+ // An implementation of std::invoke_r of C++23.
118
+ template <class ReturnType, class F, class... P>
137
119
  ReturnType InvokeR(F&& f, P&&... args) {
138
- // GCC 12 has a false-positive -Wmaybe-uninitialized warning here.
139
- #if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(12, 0)
140
- #pragma GCC diagnostic push
141
- #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
142
- #endif
143
- return absl::base_internal::invoke(std::forward<F>(f),
144
- std::forward<P>(args)...);
145
- #if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(12, 0)
146
- #pragma GCC diagnostic pop
147
- #endif
120
+ if constexpr (std::is_void_v<ReturnType>) {
121
+ std::invoke(std::forward<F>(f), std::forward<P>(args)...);
122
+ } else {
123
+ return std::invoke(std::forward<F>(f), std::forward<P>(args)...);
124
+ }
148
125
  }
149
126
 
150
127
  //
@@ -198,32 +175,14 @@ union TypeErasedState {
198
175
  } remote;
199
176
 
200
177
  // Local-storage for the type-erased object when small and trivial enough
201
- alignas(kAlignment) char storage[kStorageSize];
178
+ alignas(kAlignment) unsigned char storage[kStorageSize];
202
179
  };
203
180
 
204
181
  // A typed accessor for the object in `TypeErasedState` storage
205
182
  template <class T>
206
183
  T& ObjectInLocalStorage(TypeErasedState* const state) {
207
184
  // We launder here because the storage may be reused with the same type.
208
- #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606L
209
185
  return *std::launder(reinterpret_cast<T*>(&state->storage));
210
- #elif ABSL_HAVE_BUILTIN(__builtin_launder)
211
- return *__builtin_launder(reinterpret_cast<T*>(&state->storage));
212
- #else
213
-
214
- // When `std::launder` or equivalent are not available, we rely on undefined
215
- // behavior, which works as intended on Abseil's officially supported
216
- // platforms as of Q2 2022.
217
- #if !defined(__clang__) && defined(__GNUC__)
218
- #pragma GCC diagnostic push
219
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
220
- #endif
221
- return *reinterpret_cast<T*>(&state->storage);
222
- #if !defined(__clang__) && defined(__GNUC__)
223
- #pragma GCC diagnostic pop
224
- #endif
225
-
226
- #endif
227
186
  }
228
187
 
229
188
  // The type for functions issuing lifetime-related operations: move and dispose
@@ -231,14 +190,14 @@ T& ObjectInLocalStorage(TypeErasedState* const state) {
231
190
  // NOTE: When specifying `FunctionToCall::`dispose, the same state must be
232
191
  // passed as both "from" and "to".
233
192
  using ManagerType = void(FunctionToCall /*operation*/,
234
- TypeErasedState* /*from*/, TypeErasedState* /*to*/)
235
- ABSL_INTERNAL_NOEXCEPT_SPEC(true);
193
+ TypeErasedState* /*from*/,
194
+ TypeErasedState* /*to*/) noexcept(true);
236
195
 
237
196
  // The type for functions issuing the actual invocation of the object
238
197
  // A pointer to such a function is contained in each AnyInvocable instance.
239
198
  template <bool SigIsNoexcept, class ReturnType, class... P>
240
- using InvokerType = ReturnType(TypeErasedState*, ForwardedParameterType<P>...)
241
- ABSL_INTERNAL_NOEXCEPT_SPEC(SigIsNoexcept);
199
+ using InvokerType = ReturnType(
200
+ TypeErasedState*, ForwardedParameterType<P>...) noexcept(SigIsNoexcept);
242
201
 
243
202
  // The manager that is used when AnyInvocable is empty
244
203
  inline void EmptyManager(FunctionToCall /*operation*/,
@@ -275,7 +234,7 @@ template <class T>
275
234
  void LocalManagerNontrivial(FunctionToCall operation,
276
235
  TypeErasedState* const from,
277
236
  TypeErasedState* const to) noexcept {
278
- static_assert(IsStoredLocally<T>::value,
237
+ static_assert(IsStoredLocally<T>(),
279
238
  "Local storage must only be used for supported types.");
280
239
  static_assert(!std::is_trivially_copyable<T>::value,
281
240
  "Locally stored types must be trivially copyable.");
@@ -303,7 +262,7 @@ ReturnType LocalInvoker(
303
262
  ForwardedParameterType<P>... args) noexcept(SigIsNoexcept) {
304
263
  using RawT = RemoveCVRef<QualTRef>;
305
264
  static_assert(
306
- IsStoredLocally<RawT>::value,
265
+ IsStoredLocally<RawT>(),
307
266
  "Target object must be in local storage in order to be invoked from it.");
308
267
 
309
268
  auto& f = (ObjectInLocalStorage<RawT>)(state);
@@ -338,7 +297,7 @@ template <class T>
338
297
  void RemoteManagerNontrivial(FunctionToCall operation,
339
298
  TypeErasedState* const from,
340
299
  TypeErasedState* const to) noexcept {
341
- static_assert(!IsStoredLocally<T>::value,
300
+ static_assert(!IsStoredLocally<T>(),
342
301
  "Remote storage must only be used for types that do not "
343
302
  "qualify for local storage.");
344
303
 
@@ -360,7 +319,7 @@ ReturnType RemoteInvoker(
360
319
  TypeErasedState* const state,
361
320
  ForwardedParameterType<P>... args) noexcept(SigIsNoexcept) {
362
321
  using RawT = RemoveCVRef<QualTRef>;
363
- static_assert(!IsStoredLocally<RawT>::value,
322
+ static_assert(!IsStoredLocally<RawT>(),
364
323
  "Target object must be in remote storage in order to be "
365
324
  "invoked from it.");
366
325
 
@@ -440,13 +399,6 @@ class CoreImpl {
440
399
 
441
400
  CoreImpl() noexcept : manager_(EmptyManager), invoker_(nullptr) {}
442
401
 
443
- enum class TargetType {
444
- kPointer,
445
- kCompatibleAnyInvocable,
446
- kIncompatibleAnyInvocable,
447
- kOther,
448
- };
449
-
450
402
  // Note: QualDecayedTRef here includes the cv-ref qualifiers associated with
451
403
  // the invocation of the Invocable. The unqualified type is the target object
452
404
  // type to be stored.
@@ -454,19 +406,47 @@ class CoreImpl {
454
406
  explicit CoreImpl(TypedConversionConstruct<QualDecayedTRef>, F&& f) {
455
407
  using DecayedT = RemoveCVRef<QualDecayedTRef>;
456
408
 
457
- constexpr TargetType kTargetType =
458
- (std::is_pointer<DecayedT>::value ||
459
- std::is_member_pointer<DecayedT>::value)
460
- ? TargetType::kPointer
461
- : IsCompatibleAnyInvocable<DecayedT>::value
462
- ? TargetType::kCompatibleAnyInvocable
463
- : IsAnyInvocable<DecayedT>::value
464
- ? TargetType::kIncompatibleAnyInvocable
465
- : TargetType::kOther;
466
- // NOTE: We only use integers instead of enums as template parameters in
467
- // order to work around a bug on C++14 under MSVC 2017.
468
- // See b/236131881.
469
- Initialize<kTargetType, QualDecayedTRef>(std::forward<F>(f));
409
+ if constexpr (std::is_pointer<DecayedT>::value ||
410
+ std::is_member_pointer<DecayedT>::value) {
411
+ // This condition handles types that decay into pointers. This includes
412
+ // function references, which cannot be null. GCC warns against comparing
413
+ // their decayed form with nullptr (https://godbolt.org/z/9r9TMTcPK).
414
+ // We could work around this warning with constexpr programming, using
415
+ // std::is_function_v<std::remove_reference_t<F>>, but we choose to ignore
416
+ // it instead of writing more code.
417
+ #if !defined(__clang__) && defined(__GNUC__)
418
+ #pragma GCC diagnostic push
419
+ #pragma GCC diagnostic ignored "-Wpragmas"
420
+ #pragma GCC diagnostic ignored "-Waddress"
421
+ #pragma GCC diagnostic ignored "-Wnonnull-compare"
422
+ #endif
423
+ if (static_cast<DecayedT>(f) == nullptr) {
424
+ #if !defined(__clang__) && defined(__GNUC__)
425
+ #pragma GCC diagnostic pop
426
+ #endif
427
+ manager_ = EmptyManager;
428
+ invoker_ = nullptr;
429
+ } else {
430
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
431
+ }
432
+ } else if constexpr (IsCompatibleAnyInvocable<DecayedT>::value) {
433
+ // In this case we can "steal the guts" of the other AnyInvocable.
434
+ f.manager_(FunctionToCall::relocate_from_to, &f.state_, &state_);
435
+ manager_ = f.manager_;
436
+ invoker_ = f.invoker_;
437
+
438
+ f.manager_ = EmptyManager;
439
+ f.invoker_ = nullptr;
440
+ } else if constexpr (IsAnyInvocable<DecayedT>::value) {
441
+ if (f.HasValue()) {
442
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
443
+ } else {
444
+ manager_ = EmptyManager;
445
+ invoker_ = nullptr;
446
+ }
447
+ } else {
448
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
449
+ }
470
450
  }
471
451
 
472
452
  // Note: QualTRef here includes the cv-ref qualifiers associated with the
@@ -517,122 +497,43 @@ class CoreImpl {
517
497
  invoker_ = nullptr;
518
498
  }
519
499
 
520
- template <TargetType target_type, class QualDecayedTRef, class F,
521
- absl::enable_if_t<target_type == TargetType::kPointer, int> = 0>
522
- void Initialize(F&& f) {
523
- // This condition handles types that decay into pointers, which includes
524
- // function references. Since function references cannot be null, GCC warns
525
- // against comparing their decayed form with nullptr.
526
- // Since this is template-heavy code, we prefer to disable these warnings
527
- // locally instead of adding yet another overload of this function.
528
- #if !defined(__clang__) && defined(__GNUC__)
529
- #pragma GCC diagnostic push
530
- #pragma GCC diagnostic ignored "-Wpragmas"
531
- #pragma GCC diagnostic ignored "-Waddress"
532
- #pragma GCC diagnostic ignored "-Wnonnull-compare"
533
- #endif
534
- if (static_cast<RemoveCVRef<QualDecayedTRef>>(f) == nullptr) {
535
- #if !defined(__clang__) && defined(__GNUC__)
536
- #pragma GCC diagnostic pop
537
- #endif
538
- manager_ = EmptyManager;
539
- invoker_ = nullptr;
540
- return;
541
- }
542
- InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
543
- }
544
-
545
- template <TargetType target_type, class QualDecayedTRef, class F,
546
- absl::enable_if_t<
547
- target_type == TargetType::kCompatibleAnyInvocable, int> = 0>
548
- void Initialize(F&& f) {
549
- // In this case we can "steal the guts" of the other AnyInvocable.
550
- f.manager_(FunctionToCall::relocate_from_to, &f.state_, &state_);
551
- manager_ = f.manager_;
552
- invoker_ = f.invoker_;
553
-
554
- f.manager_ = EmptyManager;
555
- f.invoker_ = nullptr;
556
- }
557
-
558
- template <TargetType target_type, class QualDecayedTRef, class F,
559
- absl::enable_if_t<
560
- target_type == TargetType::kIncompatibleAnyInvocable, int> = 0>
561
- void Initialize(F&& f) {
562
- if (f.HasValue()) {
563
- InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
564
- } else {
565
- manager_ = EmptyManager;
566
- invoker_ = nullptr;
567
- }
568
- }
569
-
570
- template <TargetType target_type, class QualDecayedTRef, class F,
571
- typename = absl::enable_if_t<target_type == TargetType::kOther>>
572
- void Initialize(F&& f) {
573
- InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
574
- }
575
-
576
500
  // Use local (inline) storage for applicable target object types.
577
- template <class QualTRef, class... Args,
578
- typename = absl::enable_if_t<
579
- IsStoredLocally<RemoveCVRef<QualTRef>>::value>>
501
+ template <class QualTRef, class... Args>
580
502
  void InitializeStorage(Args&&... args) {
581
503
  using RawT = RemoveCVRef<QualTRef>;
582
- ::new (static_cast<void*>(&state_.storage))
583
- RawT(std::forward<Args>(args)...);
584
-
585
- invoker_ = LocalInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
586
- // We can simplify our manager if we know the type is trivially copyable.
587
- InitializeLocalManager<RawT>();
588
- }
589
-
590
- // Use remote storage for target objects that cannot be stored locally.
591
- template <class QualTRef, class... Args,
592
- absl::enable_if_t<!IsStoredLocally<RemoveCVRef<QualTRef>>::value,
593
- int> = 0>
594
- void InitializeStorage(Args&&... args) {
595
- InitializeRemoteManager<RemoveCVRef<QualTRef>>(std::forward<Args>(args)...);
596
- // This is set after everything else in case an exception is thrown in an
597
- // earlier step of the initialization.
598
- invoker_ = RemoteInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
599
- }
600
-
601
- template <class T,
602
- typename = absl::enable_if_t<std::is_trivially_copyable<T>::value>>
603
- void InitializeLocalManager() {
604
- manager_ = LocalManagerTrivial;
605
- }
606
-
607
- template <class T,
608
- absl::enable_if_t<!std::is_trivially_copyable<T>::value, int> = 0>
609
- void InitializeLocalManager() {
610
- manager_ = LocalManagerNontrivial<T>;
611
- }
612
-
613
- template <class T>
614
- using HasTrivialRemoteStorage =
615
- std::integral_constant<bool, std::is_trivially_destructible<T>::value &&
616
- alignof(T) <=
617
- ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT>;
618
-
619
- template <class T, class... Args,
620
- typename = absl::enable_if_t<HasTrivialRemoteStorage<T>::value>>
621
- void InitializeRemoteManager(Args&&... args) {
622
- // unique_ptr is used for exception-safety in case construction throws.
623
- std::unique_ptr<void, TrivialDeleter> uninitialized_target(
624
- ::operator new(sizeof(T)), TrivialDeleter(sizeof(T)));
625
- ::new (uninitialized_target.get()) T(std::forward<Args>(args)...);
626
- state_.remote.target = uninitialized_target.release();
627
- state_.remote.size = sizeof(T);
628
- manager_ = RemoteManagerTrivial;
504
+ if constexpr (IsStoredLocally<RawT>()) {
505
+ ::new (static_cast<void*>(&state_.storage))
506
+ RawT(std::forward<Args>(args)...);
507
+ invoker_ = LocalInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
508
+ // We can simplify our manager if we know the type is trivially copyable.
509
+ if constexpr (std::is_trivially_copyable_v<RawT>) {
510
+ manager_ = LocalManagerTrivial;
511
+ } else {
512
+ manager_ = LocalManagerNontrivial<RawT>;
513
+ }
514
+ } else {
515
+ InitializeRemoteManager<RawT>(std::forward<Args>(args)...);
516
+ // This is set after everything else in case an exception is thrown in an
517
+ // earlier step of the initialization.
518
+ invoker_ = RemoteInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
519
+ }
629
520
  }
630
521
 
631
- template <class T, class... Args,
632
- absl::enable_if_t<!HasTrivialRemoteStorage<T>::value, int> = 0>
522
+ template <class T, class... Args>
633
523
  void InitializeRemoteManager(Args&&... args) {
634
- state_.remote.target = ::new T(std::forward<Args>(args)...);
635
- manager_ = RemoteManagerNontrivial<T>;
524
+ if constexpr (std::is_trivially_destructible_v<T> &&
525
+ alignof(T) <= ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT) {
526
+ // unique_ptr is used for exception-safety in case construction throws.
527
+ std::unique_ptr<void, TrivialDeleter> uninitialized_target(
528
+ ::operator new(sizeof(T)), TrivialDeleter(sizeof(T)));
529
+ ::new (uninitialized_target.get()) T(std::forward<Args>(args)...);
530
+ state_.remote.target = uninitialized_target.release();
531
+ state_.remote.size = sizeof(T);
532
+ manager_ = RemoteManagerTrivial;
533
+ } else {
534
+ state_.remote.target = ::new T(std::forward<Args>(args)...);
535
+ manager_ = RemoteManagerNontrivial<T>;
536
+ }
636
537
  }
637
538
 
638
539
  //////////////////////////////////////////////////////////////////////////////
@@ -734,17 +635,12 @@ using CanAssignReferenceWrapper = TrueAlias<
734
635
  absl::enable_if_t<Impl<Sig>::template CallIsNoexceptIfSigIsNoexcept<
735
636
  std::reference_wrapper<F>>::value>>;
736
637
 
737
- ////////////////////////////////////////////////////////////////////////////////
738
- //
739
638
  // The constraint for checking whether or not a call meets the noexcept
740
- // callability requirements. This is a preprocessor macro because specifying it
639
+ // callability requirements. We use a preprocessor macro because specifying it
741
640
  // this way as opposed to a disjunction/branch can improve the user-side error
742
641
  // messages and avoids an instantiation of std::is_nothrow_invocable_r in the
743
642
  // cases where the user did not specify a noexcept function type.
744
643
  //
745
- #define ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT(inv_quals, noex) \
746
- ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_##noex(inv_quals)
747
-
748
644
  // The disjunction below is because we can't rely on std::is_nothrow_invocable_r
749
645
  // to give the right result when ReturnType is non-moveable in toolchains that
750
646
  // don't treat non-moveable result types correctly. For example this was the
@@ -759,7 +655,7 @@ using CanAssignReferenceWrapper = TrueAlias<
759
655
  UnwrapStdReferenceWrapper<absl::decay_t<F>> inv_quals, P...>, \
760
656
  std::is_same< \
761
657
  ReturnType, \
762
- absl::base_internal::invoke_result_t< \
658
+ std::invoke_result_t< \
763
659
  UnwrapStdReferenceWrapper<absl::decay_t<F>> inv_quals, \
764
660
  P...>>>>::value>
765
661
 
@@ -775,13 +671,13 @@ using CanAssignReferenceWrapper = TrueAlias<
775
671
  // noex is "true" if the function type is noexcept, or false if it is not.
776
672
  //
777
673
  // The CallIsValid condition is more complicated than simply using
778
- // absl::base_internal::is_invocable_r because we can't rely on it to give the
779
- // right result when ReturnType is non-moveable in toolchains that don't treat
780
- // non-moveable result types correctly. For example this was the case in libc++
781
- // before commit c3a24882 (2022-05).
674
+ // std::is_invocable_r because we can't rely on it to give the right result
675
+ // when ReturnType is non-moveable in toolchains that don't treat non-moveable
676
+ // result types correctly. For example this was the case in libc++ before commit
677
+ // c3a24882 (2022-05).
782
678
  #define ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, noex) \
783
679
  template <class ReturnType, class... P> \
784
- class Impl<ReturnType(P...) cv ref ABSL_INTERNAL_NOEXCEPT_SPEC(noex)> \
680
+ class Impl<ReturnType(P...) cv ref noexcept(noex)> \
785
681
  : public CoreImpl<noex, ReturnType, P...> { \
786
682
  public: \
787
683
  /*The base class, which contains the datamembers and core operations*/ \
@@ -790,17 +686,16 @@ using CanAssignReferenceWrapper = TrueAlias<
790
686
  /*SFINAE constraint to check if F is invocable with the proper signature*/ \
791
687
  template <class F> \
792
688
  using CallIsValid = TrueAlias<absl::enable_if_t<absl::disjunction< \
793
- absl::base_internal::is_invocable_r<ReturnType, \
794
- absl::decay_t<F> inv_quals, P...>, \
795
- std::is_same<ReturnType, \
796
- absl::base_internal::invoke_result_t< \
797
- absl::decay_t<F> inv_quals, P...>>>::value>>; \
689
+ std::is_invocable_r<ReturnType, absl::decay_t<F> inv_quals, P...>, \
690
+ std::is_same< \
691
+ ReturnType, \
692
+ std::invoke_result_t<absl::decay_t<F> inv_quals, P...>>>::value>>; \
798
693
  \
799
694
  /*SFINAE constraint to check if F is nothrow-invocable when necessary*/ \
800
695
  template <class F> \
801
696
  using CallIsNoexceptIfSigIsNoexcept = \
802
- TrueAlias<ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT(inv_quals, \
803
- noex)>; \
697
+ TrueAlias<ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_##noex( \
698
+ inv_quals)>; \
804
699
  \
805
700
  /*Put the AnyInvocable into an empty state.*/ \
806
701
  Impl() = default; \
@@ -822,8 +717,7 @@ using CanAssignReferenceWrapper = TrueAlias<
822
717
  \
823
718
  /*Raises a fatal error when the AnyInvocable is invoked after a move*/ \
824
719
  static ReturnType InvokedAfterMove( \
825
- TypeErasedState*, \
826
- ForwardedParameterType<P>...) noexcept(noex) { \
720
+ TypeErasedState*, ForwardedParameterType<P>...) noexcept(noex) { \
827
721
  ABSL_HARDENING_ASSERT(false && "AnyInvocable use-after-move"); \
828
722
  std::terminate(); \
829
723
  } \
@@ -851,18 +745,11 @@ using CanAssignReferenceWrapper = TrueAlias<
851
745
  } \
852
746
  }
853
747
 
854
- // Define the `noexcept(true)` specialization only for C++17 and beyond, when
855
- // `noexcept` is part of the type system.
856
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
857
748
  // A convenience macro that defines specializations for the noexcept(true) and
858
749
  // noexcept(false) forms, given the other properties.
859
750
  #define ABSL_INTERNAL_ANY_INVOCABLE_IMPL(cv, ref, inv_quals) \
860
751
  ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, false); \
861
752
  ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, true)
862
- #else
863
- #define ABSL_INTERNAL_ANY_INVOCABLE_IMPL(cv, ref, inv_quals) \
864
- ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, false)
865
- #endif
866
753
 
867
754
  // Non-ref-qualified partial specializations
868
755
  ABSL_INTERNAL_ANY_INVOCABLE_IMPL(, , &);
@@ -881,8 +768,6 @@ ABSL_INTERNAL_ANY_INVOCABLE_IMPL(const, &&, const&&);
881
768
  #undef ABSL_INTERNAL_ANY_INVOCABLE_IMPL_
882
769
  #undef ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_false
883
770
  #undef ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_true
884
- #undef ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT
885
- #undef ABSL_INTERNAL_NOEXCEPT_SPEC
886
771
 
887
772
  } // namespace internal_any_invocable
888
773
  ABSL_NAMESPACE_END
@@ -21,7 +21,6 @@
21
21
  #include <type_traits>
22
22
  #include <utility>
23
23
 
24
- #include "absl/base/internal/invoke.h"
25
24
  #include "absl/container/internal/compressed_tuple.h"
26
25
  #include "absl/meta/type_traits.h"
27
26
  #include "absl/utility/utility.h"
@@ -33,9 +32,8 @@ namespace functional_internal {
33
32
  // Invoke the method, expanding the tuple of bound arguments.
34
33
  template <class R, class Tuple, size_t... Idx, class... Args>
35
34
  R Apply(Tuple&& bound, absl::index_sequence<Idx...>, Args&&... free) {
36
- return base_internal::invoke(
37
- std::forward<Tuple>(bound).template get<Idx>()...,
38
- std::forward<Args>(free)...);
35
+ return std::invoke(std::forward<Tuple>(bound).template get<Idx>()...,
36
+ std::forward<Args>(free)...);
39
37
  }
40
38
 
41
39
  template <class F, class... BoundArgs>
@@ -50,23 +48,23 @@ class FrontBinder {
50
48
  constexpr explicit FrontBinder(absl::in_place_t, Ts&&... ts)
51
49
  : bound_args_(std::forward<Ts>(ts)...) {}
52
50
 
53
- template <class... FreeArgs, class R = base_internal::invoke_result_t<
54
- F&, BoundArgs&..., FreeArgs&&...>>
51
+ template <class... FreeArgs,
52
+ class R = std::invoke_result_t<F&, BoundArgs&..., FreeArgs&&...>>
55
53
  R operator()(FreeArgs&&... free_args) & {
56
54
  return functional_internal::Apply<R>(bound_args_, Idx(),
57
55
  std::forward<FreeArgs>(free_args)...);
58
56
  }
59
57
 
60
58
  template <class... FreeArgs,
61
- class R = base_internal::invoke_result_t<
62
- const F&, const BoundArgs&..., FreeArgs&&...>>
59
+ class R = std::invoke_result_t<const F&, const BoundArgs&...,
60
+ FreeArgs&&...>>
63
61
  R operator()(FreeArgs&&... free_args) const& {
64
62
  return functional_internal::Apply<R>(bound_args_, Idx(),
65
63
  std::forward<FreeArgs>(free_args)...);
66
64
  }
67
65
 
68
- template <class... FreeArgs, class R = base_internal::invoke_result_t<
69
- F&&, BoundArgs&&..., FreeArgs&&...>>
66
+ template <class... FreeArgs,
67
+ class R = std::invoke_result_t<F&&, BoundArgs&&..., FreeArgs&&...>>
70
68
  R operator()(FreeArgs&&... free_args) && {
71
69
  // This overload is called when *this is an rvalue. If some of the bound
72
70
  // arguments are stored by value or rvalue reference, we move them.
@@ -75,8 +73,8 @@ class FrontBinder {
75
73
  }
76
74
 
77
75
  template <class... FreeArgs,
78
- class R = base_internal::invoke_result_t<
79
- const F&&, const BoundArgs&&..., FreeArgs&&...>>
76
+ class R = std::invoke_result_t<const F&&, const BoundArgs&&...,
77
+ FreeArgs&&...>>
80
78
  R operator()(FreeArgs&&... free_args) const&& {
81
79
  // This overload is called when *this is an rvalue. If some of the bound
82
80
  // arguments are stored by value or rvalue reference, we move them.
@@ -19,7 +19,6 @@
19
19
  #include <functional>
20
20
  #include <type_traits>
21
21
 
22
- #include "absl/base/internal/invoke.h"
23
22
  #include "absl/functional/any_invocable.h"
24
23
  #include "absl/meta/type_traits.h"
25
24
 
@@ -74,15 +73,13 @@ using Invoker = R (*)(VoidPtr, typename ForwardT<Args>::type...);
74
73
  template <typename Obj, typename R, typename... Args>
75
74
  R InvokeObject(VoidPtr ptr, typename ForwardT<Args>::type... args) {
76
75
  auto o = static_cast<const Obj*>(ptr.obj);
77
- return static_cast<R>(
78
- absl::base_internal::invoke(*o, std::forward<Args>(args)...));
76
+ return static_cast<R>(std::invoke(*o, std::forward<Args>(args)...));
79
77
  }
80
78
 
81
79
  template <typename Fun, typename R, typename... Args>
82
80
  R InvokeFunction(VoidPtr ptr, typename ForwardT<Args>::type... args) {
83
81
  auto f = reinterpret_cast<Fun>(ptr.fun);
84
- return static_cast<R>(
85
- absl::base_internal::invoke(f, std::forward<Args>(args)...));
82
+ return static_cast<R>(std::invoke(f, std::forward<Args>(args)...));
86
83
  }
87
84
 
88
85
  template <typename Sig>
@@ -23,8 +23,6 @@
23
23
  // Before using this function, consider whether named function overloads would
24
24
  // be a better design.
25
25
  //
26
- // Note: absl::Overload requires C++17.
27
- //
28
26
  // Example:
29
27
  //
30
28
  // std::variant<std::string, int32_t, int64_t> v(int32_t{1});
@@ -46,9 +44,6 @@
46
44
  namespace absl {
47
45
  ABSL_NAMESPACE_BEGIN
48
46
 
49
- #if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
50
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
51
-
52
47
  template <typename... T>
53
48
  struct Overload final : T... {
54
49
  using T::operator()...;
@@ -71,21 +66,6 @@ struct Overload final : T... {
71
66
  template <typename... T>
72
67
  Overload(T...) -> Overload<T...>;
73
68
 
74
- #else
75
-
76
- namespace functional_internal {
77
- template <typename T>
78
- constexpr bool kDependentFalse = false;
79
- }
80
-
81
- template <typename Dependent = int, typename... T>
82
- auto Overload(T&&...) {
83
- static_assert(functional_internal::kDependentFalse<Dependent>,
84
- "Overload is only usable with C++17 or above.");
85
- }
86
-
87
- #endif
88
-
89
69
  ABSL_NAMESPACE_END
90
70
  } // namespace absl
91
71
 
@@ -18,16 +18,12 @@
18
18
  #include <string>
19
19
  #include <type_traits>
20
20
 
21
+ #include "gtest/gtest.h"
21
22
  #include "absl/base/config.h"
22
23
  #include "absl/strings/str_cat.h"
23
24
  #include "absl/strings/string_view.h"
24
25
  #include "absl/types/variant.h"
25
26
 
26
- #if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
27
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
28
-
29
- #include "gtest/gtest.h"
30
-
31
27
  namespace {
32
28
 
33
29
  TEST(OverloadTest, DispatchConsidersTypeWithAutoFallback) {
@@ -209,5 +205,3 @@ TEST(OverloadTest, HasConstexprConstructor) {
209
205
  }
210
206
 
211
207
  } // namespace
212
-
213
- #endif