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.
- package/LICENSE +15 -20
- package/README.md +63 -4
- package/binding.gyp +1 -2
- package/lib/addon.cc +9 -5
- package/lib/exec.cc +4 -4
- package/lib/match.cc +4 -4
- package/lib/new.cc +6 -6
- package/lib/pattern.cc +148 -1
- package/lib/replace.cc +5 -4
- package/lib/search.cc +1 -1
- package/lib/set.cc +85 -10
- package/lib/test.cc +1 -1
- package/lib/unicode_properties.h +15840 -0
- package/lib/wrapped_re2.h +40 -4
- package/lib/wrapped_re2_set.h +3 -1
- package/llms-full.txt +497 -0
- package/llms.txt +135 -0
- package/package.json +19 -11
- package/re2.d.ts +2 -0
- package/re2.js +1 -0
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/FAQ.md +130 -79
- package/vendor/abseil-cpp/MODULE.bazel +6 -7
- package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
- package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
- package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
- package/vendor/abseil-cpp/absl/base/casts.h +8 -1
- package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
- package/vendor/abseil-cpp/absl/base/config.h +53 -9
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
- package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
- package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
- package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
- package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
- package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- package/vendor/abseil-cpp/absl/base/macros.h +36 -20
- package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
- package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
- package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
- package/vendor/abseil-cpp/absl/base/options.h +55 -1
- package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
- package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
- package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
- package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
- package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
- package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
- package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
- package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
- package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
- package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
- package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
- package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
- package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
- package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
- package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
- package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
- package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
- package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
- package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
- package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
- package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
- package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
- package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
- package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
- package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
- package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
- package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
- package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
- package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
- package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
- package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
- package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
- package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
- package/vendor/abseil-cpp/absl/status/status.cc +62 -70
- package/vendor/abseil-cpp/absl/status/status.h +249 -23
- package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
- package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
- package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
- package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
- package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
- package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
- package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
- package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
- package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
- package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
- package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
- package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
- package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
- package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
- package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
- package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
- package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
- package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
- package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
- package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
- package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
- package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
- package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
- package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/time/clock.h +3 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
- package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
- package/vendor/abseil-cpp/absl/time/format.cc +3 -10
- package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
- package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
- package/vendor/abseil-cpp/absl/types/any.h +26 -4
- package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
- package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
- package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
- package/vendor/abseil-cpp/absl/types/compare.h +4 -4
- package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
- package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
- package/vendor/abseil-cpp/absl/types/optional.h +30 -3
- package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
- package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
- package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
- package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
- package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
- package/vendor/abseil-cpp/absl/types/span.h +19 -23
- package/vendor/abseil-cpp/absl/types/variant.h +75 -18
- package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
|
@@ -47,11 +47,12 @@
|
|
|
47
47
|
|
|
48
48
|
#include "absl/algorithm/algorithm.h"
|
|
49
49
|
#include "absl/base/attributes.h"
|
|
50
|
+
#include "absl/base/internal/hardening.h"
|
|
50
51
|
#include "absl/base/internal/iterator_traits.h"
|
|
51
|
-
#include "absl/base/internal/throw_delegate.h"
|
|
52
52
|
#include "absl/base/macros.h"
|
|
53
53
|
#include "absl/base/optimization.h"
|
|
54
54
|
#include "absl/base/port.h"
|
|
55
|
+
#include "absl/base/throw_delegate.h"
|
|
55
56
|
#include "absl/container/internal/inlined_vector.h"
|
|
56
57
|
#include "absl/hash/internal/weakly_mixed_integer.h"
|
|
57
58
|
#include "absl/memory/memory.h"
|
|
@@ -192,7 +193,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
192
193
|
// allocator doesn't do anything fancy, and there is nothing on the heap
|
|
193
194
|
// then we know it is legal for us to simply memcpy the other vector's
|
|
194
195
|
// inlined bytes to form our copy of its elements.
|
|
195
|
-
if (
|
|
196
|
+
if (std::is_trivially_copy_constructible<value_type>::value &&
|
|
196
197
|
std::is_same<A, std::allocator<value_type>>::value &&
|
|
197
198
|
!other.storage_.GetIsAllocated()) {
|
|
198
199
|
storage_.MemcpyFrom(other.storage_);
|
|
@@ -363,14 +364,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
363
364
|
//
|
|
364
365
|
// Returns a `reference` to the `i`th element of the inlined vector.
|
|
365
366
|
reference operator[](size_type i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
366
|
-
|
|
367
|
+
absl::base_internal::HardeningAssertLT(i, size());
|
|
367
368
|
return data()[i];
|
|
368
369
|
}
|
|
369
370
|
|
|
370
371
|
// Overload of `InlinedVector::operator[](...)` that returns a
|
|
371
372
|
// `const_reference` to the `i`th element of the inlined vector.
|
|
372
373
|
const_reference operator[](size_type i) const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
373
|
-
|
|
374
|
+
absl::base_internal::HardeningAssertLT(i, size());
|
|
374
375
|
return data()[i];
|
|
375
376
|
}
|
|
376
377
|
|
|
@@ -382,8 +383,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
382
383
|
// in both debug and non-debug builds, `std::out_of_range` will be thrown.
|
|
383
384
|
reference at(size_type i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
384
385
|
if (ABSL_PREDICT_FALSE(i >= size())) {
|
|
385
|
-
|
|
386
|
-
"`InlinedVector::at(size_type)` failed bounds check");
|
|
386
|
+
ThrowStdOutOfRange("`InlinedVector::at(size_type)` failed bounds check");
|
|
387
387
|
}
|
|
388
388
|
return data()[i];
|
|
389
389
|
}
|
|
@@ -395,7 +395,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
395
395
|
// in both debug and non-debug builds, `std::out_of_range` will be thrown.
|
|
396
396
|
const_reference at(size_type i) const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
397
397
|
if (ABSL_PREDICT_FALSE(i >= size())) {
|
|
398
|
-
|
|
398
|
+
ThrowStdOutOfRange(
|
|
399
399
|
"`InlinedVector::at(size_type) const` failed bounds check");
|
|
400
400
|
}
|
|
401
401
|
return data()[i];
|
|
@@ -405,14 +405,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
405
405
|
//
|
|
406
406
|
// Returns a `reference` to the first element of the inlined vector.
|
|
407
407
|
reference front() ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
408
|
-
|
|
408
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
409
409
|
return data()[0];
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
// Overload of `InlinedVector::front()` that returns a `const_reference` to
|
|
413
413
|
// the first element of the inlined vector.
|
|
414
414
|
const_reference front() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
415
|
-
|
|
415
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
416
416
|
return data()[0];
|
|
417
417
|
}
|
|
418
418
|
|
|
@@ -420,14 +420,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
420
420
|
//
|
|
421
421
|
// Returns a `reference` to the last element of the inlined vector.
|
|
422
422
|
reference back() ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
423
|
-
|
|
423
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
424
424
|
return data()[size() - 1];
|
|
425
425
|
}
|
|
426
426
|
|
|
427
427
|
// Overload of `InlinedVector::back()` that returns a `const_reference` to the
|
|
428
428
|
// last element of the inlined vector.
|
|
429
429
|
const_reference back() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
430
|
-
|
|
430
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
431
431
|
return data()[size() - 1];
|
|
432
432
|
}
|
|
433
433
|
|
|
@@ -601,7 +601,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
601
601
|
// NOTE: If `n` is smaller than `size()`, extra elements are destroyed. If `n`
|
|
602
602
|
// is larger than `size()`, new elements are value-initialized.
|
|
603
603
|
void resize(size_type n) {
|
|
604
|
-
|
|
604
|
+
absl::base_internal::HardeningAssertLE(n, max_size());
|
|
605
605
|
storage_.Resize(DefaultValueAdapter<A>(), n);
|
|
606
606
|
}
|
|
607
607
|
|
|
@@ -611,7 +611,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
611
611
|
// NOTE: if `n` is smaller than `size()`, extra elements are destroyed. If `n`
|
|
612
612
|
// is larger than `size()`, new elements are copied-constructed from `v`.
|
|
613
613
|
void resize(size_type n, const_reference v) {
|
|
614
|
-
|
|
614
|
+
absl::base_internal::HardeningAssertLE(n, max_size());
|
|
615
615
|
storage_.Resize(CopyValueAdapter<A>(std::addressof(v)), n);
|
|
616
616
|
}
|
|
617
617
|
|
|
@@ -636,8 +636,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
636
636
|
// the newly inserted elements.
|
|
637
637
|
iterator insert(const_iterator pos, size_type n,
|
|
638
638
|
const_reference v) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
639
|
-
|
|
640
|
-
|
|
639
|
+
absl::base_internal::HardeningAssertGE(pos, cbegin());
|
|
640
|
+
absl::base_internal::HardeningAssertLE(pos, cend());
|
|
641
641
|
|
|
642
642
|
if (ABSL_PREDICT_TRUE(n != 0)) {
|
|
643
643
|
value_type dealias = v;
|
|
@@ -677,8 +677,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
677
677
|
EnableIfAtLeastForwardIterator<ForwardIterator> = 0>
|
|
678
678
|
iterator insert(const_iterator pos, ForwardIterator first,
|
|
679
679
|
ForwardIterator last) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
680
|
-
|
|
681
|
-
|
|
680
|
+
absl::base_internal::HardeningAssertGE(pos, cbegin());
|
|
681
|
+
absl::base_internal::HardeningAssertLE(pos, cend());
|
|
682
682
|
|
|
683
683
|
if (ABSL_PREDICT_TRUE(first != last)) {
|
|
684
684
|
return storage_.Insert(
|
|
@@ -698,8 +698,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
698
698
|
DisableIfAtLeastForwardIterator<InputIterator> = 0>
|
|
699
699
|
iterator insert(const_iterator pos, InputIterator first,
|
|
700
700
|
InputIterator last) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
701
|
-
|
|
702
|
-
|
|
701
|
+
absl::base_internal::HardeningAssertGE(pos, cbegin());
|
|
702
|
+
absl::base_internal::HardeningAssertLE(pos, cend());
|
|
703
703
|
|
|
704
704
|
size_type index = static_cast<size_type>(std::distance(cbegin(), pos));
|
|
705
705
|
for (size_type i = index; first != last; ++i, static_cast<void>(++first)) {
|
|
@@ -716,8 +716,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
716
716
|
template <typename... Args>
|
|
717
717
|
iterator emplace(const_iterator pos,
|
|
718
718
|
Args&&... args) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
719
|
-
|
|
720
|
-
|
|
719
|
+
absl::base_internal::HardeningAssertGE(pos, cbegin());
|
|
720
|
+
absl::base_internal::HardeningAssertLE(pos, cend());
|
|
721
721
|
|
|
722
722
|
value_type dealias(std::forward<Args>(args)...);
|
|
723
723
|
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102329#c2
|
|
@@ -762,7 +762,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
762
762
|
//
|
|
763
763
|
// Destroys the element at `back()`, reducing the size by `1`.
|
|
764
764
|
void pop_back() noexcept {
|
|
765
|
-
|
|
765
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
766
766
|
|
|
767
767
|
AllocatorTraits<A>::destroy(storage_.GetAllocator(), data() + (size() - 1));
|
|
768
768
|
storage_.SubtractSize(1);
|
|
@@ -775,8 +775,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
775
775
|
//
|
|
776
776
|
// NOTE: may return `end()`, which is not dereferenceable.
|
|
777
777
|
iterator erase(const_iterator pos) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
778
|
-
|
|
779
|
-
|
|
778
|
+
absl::base_internal::HardeningAssertGE(pos, cbegin());
|
|
779
|
+
absl::base_internal::HardeningAssertLT(pos, cend());
|
|
780
780
|
|
|
781
781
|
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102329#c2
|
|
782
782
|
// It appears that GCC thinks that since `pos` is a const pointer and may
|
|
@@ -801,9 +801,9 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
801
801
|
// NOTE: may return `end()`, which is not dereferenceable.
|
|
802
802
|
iterator erase(const_iterator from,
|
|
803
803
|
const_iterator to) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
804
|
+
absl::base_internal::HardeningAssertGE(from, cbegin());
|
|
805
|
+
absl::base_internal::HardeningAssertLE(from, to);
|
|
806
|
+
absl::base_internal::HardeningAssertLE(to, cend());
|
|
807
807
|
|
|
808
808
|
if (ABSL_PREDICT_TRUE(from != to)) {
|
|
809
809
|
return storage_.Erase(from, to);
|
|
@@ -858,7 +858,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
858
858
|
// Assumption check: we shouldn't be told to use memcpy to implement move
|
|
859
859
|
// assignment unless we have trivially destructible elements and an
|
|
860
860
|
// allocator that does nothing fancy.
|
|
861
|
-
static_assert(
|
|
861
|
+
static_assert(std::is_trivially_destructible<value_type>::value, "");
|
|
862
862
|
static_assert(std::is_same<A, std::allocator<value_type>>::value, "");
|
|
863
863
|
|
|
864
864
|
// Throw away our existing heap allocation, if any. There is no need to
|
|
@@ -876,7 +876,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED InlinedVector {
|
|
|
876
876
|
//
|
|
877
877
|
// REQUIRES: other.storage_.GetIsAllocated()
|
|
878
878
|
void DestroyExistingAndAdopt(InlinedVector&& other) {
|
|
879
|
-
|
|
879
|
+
absl::base_internal::HardeningAssert(other.storage_.GetIsAllocated());
|
|
880
880
|
|
|
881
881
|
inlined_vector_internal::DestroyAdapter<A>::DestroyElements(
|
|
882
882
|
storage_.GetAllocator(), data(), size());
|
|
@@ -823,7 +823,7 @@ class NotTriviallyDestructible {
|
|
|
823
823
|
: p_(new int(*other.p_)) {}
|
|
824
824
|
|
|
825
825
|
NotTriviallyDestructible& operator=(const NotTriviallyDestructible& other) {
|
|
826
|
-
p_ =
|
|
826
|
+
p_ = std::make_unique<int>(*other.p_);
|
|
827
827
|
return *this;
|
|
828
828
|
}
|
|
829
829
|
|
|
@@ -1995,7 +1995,7 @@ TEST(AllocatorSupportTest, SizeAllocConstructor) {
|
|
|
1995
1995
|
TEST(InlinedVectorTest, MinimumAllocatorCompilesUsingTraits) {
|
|
1996
1996
|
using T = int;
|
|
1997
1997
|
using A = std::allocator<T>;
|
|
1998
|
-
using ATraits =
|
|
1998
|
+
using ATraits = std::allocator_traits<A>;
|
|
1999
1999
|
|
|
2000
2000
|
struct MinimumAllocator {
|
|
2001
2001
|
using value_type = T;
|
|
@@ -53,11 +53,13 @@
|
|
|
53
53
|
#include <functional>
|
|
54
54
|
#include <iterator>
|
|
55
55
|
#include <limits>
|
|
56
|
+
#include <memory>
|
|
56
57
|
#include <string>
|
|
57
58
|
#include <type_traits>
|
|
58
59
|
#include <utility>
|
|
59
60
|
|
|
60
61
|
#include "absl/base/config.h"
|
|
62
|
+
#include "absl/base/internal/hardening.h"
|
|
61
63
|
#include "absl/base/internal/raw_logging.h"
|
|
62
64
|
#include "absl/base/macros.h"
|
|
63
65
|
#include "absl/base/optimization.h"
|
|
@@ -231,7 +233,7 @@ struct key_compare_adapter {
|
|
|
231
233
|
explicit operator Compare() const { return comp(); }
|
|
232
234
|
|
|
233
235
|
template <typename T, typename U,
|
|
234
|
-
|
|
236
|
+
std::enable_if_t<
|
|
235
237
|
std::is_same<bool, compare_result_t<Compare, T, U>>::value,
|
|
236
238
|
int> = 0>
|
|
237
239
|
bool operator()(const T &lhs, const U &rhs) const {
|
|
@@ -247,7 +249,7 @@ struct key_compare_adapter {
|
|
|
247
249
|
|
|
248
250
|
template <
|
|
249
251
|
typename T, typename U,
|
|
250
|
-
|
|
252
|
+
std::enable_if_t<std::is_convertible<compare_result_t<Compare, T, U>,
|
|
251
253
|
absl::weak_ordering>::value,
|
|
252
254
|
int> = 0>
|
|
253
255
|
absl::weak_ordering operator()(const T &lhs, const U &rhs) const {
|
|
@@ -270,7 +272,7 @@ struct key_compare_adapter {
|
|
|
270
272
|
return lhs_comp_rhs;
|
|
271
273
|
}
|
|
272
274
|
};
|
|
273
|
-
using type =
|
|
275
|
+
using type = std::conditional_t<
|
|
274
276
|
std::is_base_of<BtreeTestOnlyCheckedCompareOptOutBase, Compare>::value,
|
|
275
277
|
Compare, checked_compare>;
|
|
276
278
|
};
|
|
@@ -330,11 +332,11 @@ template <typename T, typename = void>
|
|
|
330
332
|
struct prefers_linear_node_search : std::false_type {};
|
|
331
333
|
template <typename T>
|
|
332
334
|
struct has_linear_node_search_preference<
|
|
333
|
-
T,
|
|
335
|
+
T, std::void_t<typename T::absl_btree_prefer_linear_node_search>>
|
|
334
336
|
: std::true_type {};
|
|
335
337
|
template <typename T>
|
|
336
338
|
struct prefers_linear_node_search<
|
|
337
|
-
T,
|
|
339
|
+
T, std::void_t<typename T::absl_btree_prefer_linear_node_search>>
|
|
338
340
|
: T::absl_btree_prefer_linear_node_search {};
|
|
339
341
|
|
|
340
342
|
template <typename Compare, typename Key>
|
|
@@ -377,7 +379,7 @@ struct common_params : common_policy_traits<SlotPolicy> {
|
|
|
377
379
|
// this, then there will be cascading compilation failures that are confusing
|
|
378
380
|
// for users.
|
|
379
381
|
using key_compare =
|
|
380
|
-
|
|
382
|
+
std::conditional_t<!compare_has_valid_result_type<Compare, Key>(),
|
|
381
383
|
Compare,
|
|
382
384
|
typename key_compare_adapter<Compare, Key>::type>;
|
|
383
385
|
|
|
@@ -406,7 +408,7 @@ struct common_params : common_policy_traits<SlotPolicy> {
|
|
|
406
408
|
using const_reference = const value_type &;
|
|
407
409
|
|
|
408
410
|
using value_compare =
|
|
409
|
-
|
|
411
|
+
std::conditional_t<IsMap,
|
|
410
412
|
map_value_compare<original_key_compare, value_type>,
|
|
411
413
|
original_key_compare>;
|
|
412
414
|
using is_map_container = std::integral_constant<bool, IsMap>;
|
|
@@ -438,7 +440,7 @@ struct common_params : common_policy_traits<SlotPolicy> {
|
|
|
438
440
|
// This is an integral type large enough to hold as many slots as will fit a
|
|
439
441
|
// node of TargetNodeSize bytes.
|
|
440
442
|
using node_count_type =
|
|
441
|
-
|
|
443
|
+
std::conditional_t<(kNodeSlotSpace / sizeof(slot_type) >
|
|
442
444
|
(std::numeric_limits<uint8_t>::max)()),
|
|
443
445
|
uint16_t, uint8_t>; // NOLINT
|
|
444
446
|
};
|
|
@@ -1119,7 +1121,7 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1119
1121
|
using slot_type = typename params_type::slot_type;
|
|
1120
1122
|
|
|
1121
1123
|
// In sets, all iterators are const.
|
|
1122
|
-
using iterator =
|
|
1124
|
+
using iterator = std::conditional_t<
|
|
1123
1125
|
is_map_container::value,
|
|
1124
1126
|
btree_iterator<normal_node, normal_reference, normal_pointer>,
|
|
1125
1127
|
btree_iterator<normal_node, const_reference, const_pointer>>;
|
|
@@ -1146,7 +1148,7 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1146
1148
|
// const_iterator, but it specifically avoids hiding the copy constructor so
|
|
1147
1149
|
// that the trivial one will be used when possible.
|
|
1148
1150
|
template <typename N, typename R, typename P,
|
|
1149
|
-
|
|
1151
|
+
std::enable_if_t<
|
|
1150
1152
|
std::is_same<btree_iterator<N, R, P>, iterator>::value &&
|
|
1151
1153
|
std::is_same<btree_iterator, const_iterator>::value,
|
|
1152
1154
|
int> = 0>
|
|
@@ -1200,12 +1202,16 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1200
1202
|
|
|
1201
1203
|
// Accessors for the key/value the iterator is pointing at.
|
|
1202
1204
|
reference operator*() const {
|
|
1203
|
-
|
|
1205
|
+
absl::base_internal::HardeningAssertNonNull(node_);
|
|
1204
1206
|
assert_valid_generation(node_);
|
|
1205
|
-
|
|
1207
|
+
absl::base_internal::HardeningAssertGE(position_,
|
|
1208
|
+
static_cast<int>(node_->start()));
|
|
1206
1209
|
if (position_ >= node_->finish()) {
|
|
1207
|
-
|
|
1208
|
-
|
|
1210
|
+
// If this assertion fails, we have tried to dereference an end()
|
|
1211
|
+
// iterator.
|
|
1212
|
+
absl::base_internal::HardeningAssert(!IsEndIterator());
|
|
1213
|
+
absl::base_internal::HardeningAssertLT(position_,
|
|
1214
|
+
static_cast<int>(node_->finish()));
|
|
1209
1215
|
}
|
|
1210
1216
|
return node_->value(static_cast<field_type>(position_));
|
|
1211
1217
|
}
|
|
@@ -1252,7 +1258,7 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1252
1258
|
// NOTE: the const_cast is safe because this constructor is only called by
|
|
1253
1259
|
// non-const methods and the container owns the nodes.
|
|
1254
1260
|
template <typename N, typename R, typename P,
|
|
1255
|
-
|
|
1261
|
+
std::enable_if_t<
|
|
1256
1262
|
std::is_same<btree_iterator<N, R, P>, const_iterator>::value &&
|
|
1257
1263
|
std::is_same<btree_iterator, iterator>::value,
|
|
1258
1264
|
int> = 0>
|
|
@@ -1262,10 +1268,11 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1262
1268
|
position_(other.position_) {}
|
|
1263
1269
|
|
|
1264
1270
|
bool Equals(const const_iterator other) const {
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1271
|
+
absl::base_internal::HardeningAssert(
|
|
1272
|
+
((node_ == nullptr && other.node_ == nullptr) ||
|
|
1273
|
+
(node_ != nullptr && other.node_ != nullptr)) &&
|
|
1274
|
+
"Comparing default-constructed iterator with "
|
|
1275
|
+
"non-default-constructed iterator.");
|
|
1269
1276
|
// Note: we use assert instead of ABSL_HARDENING_ASSERT here because this
|
|
1270
1277
|
// changes the complexity of Equals from O(1) to O(log(N) + log(M)) where
|
|
1271
1278
|
// N/M are sizes of the containers containing node_/other.node_.
|
|
@@ -2221,7 +2228,7 @@ btree_iterator<N, R, P> &btree_iterator<N, R, P>::increment_n_slow(
|
|
|
2221
2228
|
node = node->parent();
|
|
2222
2229
|
}
|
|
2223
2230
|
if (position == node->finish()) {
|
|
2224
|
-
|
|
2231
|
+
absl::base_internal::HardeningAssert(n == 0);
|
|
2225
2232
|
return *this = save;
|
|
2226
2233
|
}
|
|
2227
2234
|
}
|
|
@@ -2258,7 +2265,8 @@ btree_iterator<N, R, P> &btree_iterator<N, R, P>::decrement_n_slow(
|
|
|
2258
2265
|
position = node->position() - 1;
|
|
2259
2266
|
node = node->parent();
|
|
2260
2267
|
}
|
|
2261
|
-
|
|
2268
|
+
absl::base_internal::HardeningAssertGE(position,
|
|
2269
|
+
static_cast<int>(node->start()));
|
|
2262
2270
|
}
|
|
2263
2271
|
} else {
|
|
2264
2272
|
--n;
|
|
@@ -2489,7 +2497,7 @@ auto btree<P>::operator=(const btree &other) -> btree & {
|
|
|
2489
2497
|
clear();
|
|
2490
2498
|
|
|
2491
2499
|
*mutable_key_comp() = other.key_comp();
|
|
2492
|
-
if (
|
|
2500
|
+
if (std::allocator_traits<
|
|
2493
2501
|
allocator_type>::propagate_on_container_copy_assignment::value) {
|
|
2494
2502
|
*mutable_allocator() = other.allocator();
|
|
2495
2503
|
}
|
|
@@ -2505,7 +2513,7 @@ auto btree<P>::operator=(btree &&other) noexcept -> btree & {
|
|
|
2505
2513
|
clear();
|
|
2506
2514
|
|
|
2507
2515
|
using std::swap;
|
|
2508
|
-
if (
|
|
2516
|
+
if (std::allocator_traits<
|
|
2509
2517
|
allocator_type>::propagate_on_container_move_assignment::value) {
|
|
2510
2518
|
swap(root_, other.root_);
|
|
2511
2519
|
// Note: `rightmost_` also contains the allocator and the key comparator.
|
|
@@ -2681,7 +2689,7 @@ void btree<P>::clear() {
|
|
|
2681
2689
|
template <typename P>
|
|
2682
2690
|
void btree<P>::swap(btree &other) {
|
|
2683
2691
|
using std::swap;
|
|
2684
|
-
if (
|
|
2692
|
+
if (std::allocator_traits<
|
|
2685
2693
|
allocator_type>::propagate_on_container_swap::value) {
|
|
2686
2694
|
// Note: `rightmost_` also contains the allocator and the key comparator.
|
|
2687
2695
|
swap(rightmost_, other.rightmost_);
|
|
@@ -18,11 +18,12 @@
|
|
|
18
18
|
#include <algorithm>
|
|
19
19
|
#include <initializer_list>
|
|
20
20
|
#include <iterator>
|
|
21
|
+
#include <memory>
|
|
21
22
|
#include <type_traits>
|
|
22
23
|
#include <utility>
|
|
23
24
|
|
|
24
25
|
#include "absl/base/attributes.h"
|
|
25
|
-
#include "absl/base/
|
|
26
|
+
#include "absl/base/throw_delegate.h"
|
|
26
27
|
#include "absl/container/internal/btree.h" // IWYU pragma: export
|
|
27
28
|
#include "absl/container/internal/common.h"
|
|
28
29
|
#include "absl/hash/internal/weakly_mixed_integer.h"
|
|
@@ -80,8 +81,8 @@ class btree_container {
|
|
|
80
81
|
explicit btree_container(const allocator_type &alloc)
|
|
81
82
|
: tree_(key_compare(), alloc) {}
|
|
82
83
|
|
|
83
|
-
btree_container(const btree_container
|
|
84
|
-
: btree_container(other,
|
|
84
|
+
btree_container(const btree_container& other)
|
|
85
|
+
: btree_container(other, std::allocator_traits<allocator_type>::
|
|
85
86
|
select_on_container_copy_construction(
|
|
86
87
|
other.get_allocator())) {}
|
|
87
88
|
btree_container(const btree_container &other, const allocator_type &alloc)
|
|
@@ -412,8 +413,8 @@ class btree_set_container : public btree_container<Tree> {
|
|
|
412
413
|
// `this`, it is left unmodified in `src`.
|
|
413
414
|
template <
|
|
414
415
|
typename T,
|
|
415
|
-
typename
|
|
416
|
-
|
|
416
|
+
typename std::enable_if_t<
|
|
417
|
+
std::conjunction<
|
|
417
418
|
std::is_same<value_type, typename T::value_type>,
|
|
418
419
|
std::is_same<allocator_type, typename T::allocator_type>,
|
|
419
420
|
std::is_same<typename params_type::is_map_container,
|
|
@@ -431,8 +432,8 @@ class btree_set_container : public btree_container<Tree> {
|
|
|
431
432
|
|
|
432
433
|
template <
|
|
433
434
|
typename T,
|
|
434
|
-
typename
|
|
435
|
-
|
|
435
|
+
typename std::enable_if_t<
|
|
436
|
+
std::conjunction<
|
|
436
437
|
std::is_same<value_type, typename T::value_type>,
|
|
437
438
|
std::is_same<allocator_type, typename T::allocator_type>,
|
|
438
439
|
std::is_same<typename params_type::is_map_container,
|
|
@@ -474,8 +475,8 @@ class btree_map_container : public btree_set_container<Tree> {
|
|
|
474
475
|
typename Tree::params_type::mapped_type, M>>;
|
|
475
476
|
template <class K, bool KValue, class M, bool MValue, typename... Dummy>
|
|
476
477
|
using LifetimeBoundKV =
|
|
477
|
-
|
|
478
|
-
|
|
478
|
+
std::conjunction<LifetimeBoundK<K, KValue, std::void_t<Dummy...>>,
|
|
479
|
+
LifetimeBoundV<M, MValue>>;
|
|
479
480
|
|
|
480
481
|
public:
|
|
481
482
|
using key_type = typename Tree::key_type;
|
|
@@ -651,16 +652,14 @@ class btree_map_container : public btree_set_container<Tree> {
|
|
|
651
652
|
template <typename K = key_type>
|
|
652
653
|
mapped_type &at(const key_arg<K> &key) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
653
654
|
auto it = this->find(key);
|
|
654
|
-
if (it == this->end())
|
|
655
|
-
base_internal::ThrowStdOutOfRange("absl::btree_map::at");
|
|
655
|
+
if (it == this->end()) ThrowStdOutOfRange("absl::btree_map::at");
|
|
656
656
|
return it->second;
|
|
657
657
|
}
|
|
658
658
|
template <typename K = key_type>
|
|
659
659
|
const mapped_type &at(const key_arg<K> &key) const
|
|
660
660
|
ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
661
661
|
auto it = this->find(key);
|
|
662
|
-
if (it == this->end())
|
|
663
|
-
base_internal::ThrowStdOutOfRange("absl::btree_map::at");
|
|
662
|
+
if (it == this->end()) ThrowStdOutOfRange("absl::btree_map::at");
|
|
664
663
|
return it->second;
|
|
665
664
|
}
|
|
666
665
|
|
|
@@ -826,8 +825,8 @@ class btree_multiset_container : public btree_container<Tree> {
|
|
|
826
825
|
// Moves all elements from `src` into `this`.
|
|
827
826
|
template <
|
|
828
827
|
typename T,
|
|
829
|
-
typename
|
|
830
|
-
|
|
828
|
+
typename std::enable_if_t<
|
|
829
|
+
std::conjunction<
|
|
831
830
|
std::is_same<value_type, typename T::value_type>,
|
|
832
831
|
std::is_same<allocator_type, typename T::allocator_type>,
|
|
833
832
|
std::is_same<typename params_type::is_map_container,
|
|
@@ -842,8 +841,8 @@ class btree_multiset_container : public btree_container<Tree> {
|
|
|
842
841
|
|
|
843
842
|
template <
|
|
844
843
|
typename T,
|
|
845
|
-
typename
|
|
846
|
-
|
|
844
|
+
typename std::enable_if_t<
|
|
845
|
+
std::conjunction<
|
|
847
846
|
std::is_same<value_type, typename T::value_type>,
|
|
848
847
|
std::is_same<allocator_type, typename T::allocator_type>,
|
|
849
848
|
std::is_same<typename params_type::is_map_container,
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include <algorithm>
|
|
19
19
|
#include <cassert>
|
|
20
20
|
#include <cstddef>
|
|
21
|
+
#include <optional>
|
|
21
22
|
#include <tuple>
|
|
22
23
|
#include <type_traits>
|
|
23
24
|
|
|
@@ -57,7 +58,7 @@ template <class Cond>
|
|
|
57
58
|
using EnableIf = std::enable_if_t<Cond::value, int>;
|
|
58
59
|
|
|
59
60
|
template <bool Value, class T>
|
|
60
|
-
using HasValue = std::conditional_t<Value, T,
|
|
61
|
+
using HasValue = std::conditional_t<Value, T, std::negation<T>>;
|
|
61
62
|
|
|
62
63
|
template <class T>
|
|
63
64
|
struct IfRRef {
|
|
@@ -74,7 +75,7 @@ struct IfRRef<T&&> {
|
|
|
74
75
|
template <class, class = void>
|
|
75
76
|
struct IsTransparent : std::false_type {};
|
|
76
77
|
template <class T>
|
|
77
|
-
struct IsTransparent<T,
|
|
78
|
+
struct IsTransparent<T, std::void_t<typename T::is_transparent>>
|
|
78
79
|
: std::true_type {};
|
|
79
80
|
|
|
80
81
|
template <bool is_transparent>
|
|
@@ -146,7 +147,7 @@ class node_handle_base {
|
|
|
146
147
|
|
|
147
148
|
void reset() {
|
|
148
149
|
assert(alloc_.has_value());
|
|
149
|
-
alloc_ =
|
|
150
|
+
alloc_ = std::nullopt;
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
slot_type* slot() const {
|
|
@@ -156,7 +157,7 @@ class node_handle_base {
|
|
|
156
157
|
allocator_type* alloc() { return std::addressof(*alloc_); }
|
|
157
158
|
|
|
158
159
|
private:
|
|
159
|
-
|
|
160
|
+
std::optional<allocator_type> alloc_ = {};
|
|
160
161
|
alignas(slot_type) mutable unsigned char slot_space_[sizeof(slot_type)] = {};
|
|
161
162
|
};
|
|
162
163
|
|
|
@@ -182,7 +183,7 @@ class node_handle : public node_handle_base<PolicyTraits, Alloc> {
|
|
|
182
183
|
// For maps.
|
|
183
184
|
template <typename Policy, typename PolicyTraits, typename Alloc>
|
|
184
185
|
class node_handle<Policy, PolicyTraits, Alloc,
|
|
185
|
-
|
|
186
|
+
std::void_t<typename Policy::mapped_type>>
|
|
186
187
|
: public node_handle_base<PolicyTraits, Alloc> {
|
|
187
188
|
using Base = node_handle_base<PolicyTraits, Alloc>;
|
|
188
189
|
using slot_type = typename PolicyTraits::slot_type;
|
|
@@ -81,7 +81,7 @@ struct common_policy_traits {
|
|
|
81
81
|
// Note: we use remove_const_t so that the two overloads have different args
|
|
82
82
|
// in the case of sets with explicitly const value_types.
|
|
83
83
|
template <class P = Policy>
|
|
84
|
-
static auto element(
|
|
84
|
+
static auto element(std::remove_const_t<slot_type>* slot)
|
|
85
85
|
-> decltype(P::element(slot)) {
|
|
86
86
|
return P::element(slot);
|
|
87
87
|
}
|
|
@@ -86,7 +86,7 @@ struct Storage {
|
|
|
86
86
|
T value;
|
|
87
87
|
constexpr Storage() = default;
|
|
88
88
|
template <typename V>
|
|
89
|
-
explicit constexpr Storage(
|
|
89
|
+
explicit constexpr Storage(std::in_place_t, V&& v)
|
|
90
90
|
: value(std::forward<V>(v)) {}
|
|
91
91
|
constexpr const T& get() const& { return value; }
|
|
92
92
|
constexpr T& get() & { return value; }
|
|
@@ -99,7 +99,7 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC Storage<T, I, Tag, true> : T {
|
|
|
99
99
|
constexpr Storage() = default;
|
|
100
100
|
|
|
101
101
|
template <typename V>
|
|
102
|
-
explicit constexpr Storage(
|
|
102
|
+
explicit constexpr Storage(std::in_place_t, V&& v) : T(std::forward<V>(v)) {}
|
|
103
103
|
|
|
104
104
|
constexpr const T& get() const& { return *this; }
|
|
105
105
|
constexpr T& get() & { return *this; }
|
|
@@ -112,7 +112,7 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTupleImpl;
|
|
|
112
112
|
|
|
113
113
|
template <typename... Ts, size_t... I, bool ShouldAnyUseBase>
|
|
114
114
|
struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC
|
|
115
|
-
CompressedTupleImpl<CompressedTuple<Ts...>,
|
|
115
|
+
CompressedTupleImpl<CompressedTuple<Ts...>, std::index_sequence<I...>,
|
|
116
116
|
ShouldAnyUseBase>
|
|
117
117
|
// We use the dummy identity function through std::integral_constant to
|
|
118
118
|
// convince MSVC of accepting and expanding I in that context. Without it
|
|
@@ -122,23 +122,23 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC
|
|
|
122
122
|
StorageTag<Ts...>>... {
|
|
123
123
|
constexpr CompressedTupleImpl() = default;
|
|
124
124
|
template <typename... Vs>
|
|
125
|
-
explicit constexpr CompressedTupleImpl(
|
|
126
|
-
: Storage<Ts, I, StorageTag<Ts...>>(
|
|
125
|
+
explicit constexpr CompressedTupleImpl(std::in_place_t, Vs&&... args)
|
|
126
|
+
: Storage<Ts, I, StorageTag<Ts...>>(std::in_place,
|
|
127
127
|
std::forward<Vs>(args))... {}
|
|
128
128
|
friend CompressedTuple<Ts...>;
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
template <typename... Ts, size_t... I>
|
|
132
132
|
struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC
|
|
133
|
-
CompressedTupleImpl<CompressedTuple<Ts...>,
|
|
133
|
+
CompressedTupleImpl<CompressedTuple<Ts...>, std::index_sequence<I...>,
|
|
134
134
|
false>
|
|
135
135
|
// We use the dummy identity function as above...
|
|
136
136
|
: Storage<Ts, std::integral_constant<size_t, I>::value, StorageTag<Ts...>,
|
|
137
137
|
false>... {
|
|
138
138
|
constexpr CompressedTupleImpl() = default;
|
|
139
139
|
template <typename... Vs>
|
|
140
|
-
explicit constexpr CompressedTupleImpl(
|
|
141
|
-
: Storage<Ts, I, StorageTag<Ts...>, false>(
|
|
140
|
+
explicit constexpr CompressedTupleImpl(std::in_place_t, Vs&&... args)
|
|
141
|
+
: Storage<Ts, I, StorageTag<Ts...>, false>(std::in_place,
|
|
142
142
|
std::forward<Vs>(args))... {}
|
|
143
143
|
friend CompressedTuple<Ts...>;
|
|
144
144
|
};
|
|
@@ -166,7 +166,7 @@ struct TupleMoveConstructible : std::false_type {};
|
|
|
166
166
|
template <class... Ts, class... Vs>
|
|
167
167
|
struct TupleMoveConstructible<true, CompressedTuple<Ts...>, Vs...>
|
|
168
168
|
: std::integral_constant<
|
|
169
|
-
bool,
|
|
169
|
+
bool, std::conjunction<
|
|
170
170
|
TupleElementMoveConstructible<Ts, Vs&&>...>::value> {};
|
|
171
171
|
|
|
172
172
|
template <typename T>
|
|
@@ -204,7 +204,7 @@ struct TupleItemsMoveConstructible
|
|
|
204
204
|
template <typename... Ts>
|
|
205
205
|
class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
|
|
206
206
|
: private internal_compressed_tuple::CompressedTupleImpl<
|
|
207
|
-
CompressedTuple<Ts...>,
|
|
207
|
+
CompressedTuple<Ts...>, std::index_sequence_for<Ts...>,
|
|
208
208
|
internal_compressed_tuple::ShouldAnyUseBase<Ts...>()> {
|
|
209
209
|
private:
|
|
210
210
|
template <int I>
|
|
@@ -224,19 +224,19 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
|
|
|
224
224
|
constexpr CompressedTuple() = default;
|
|
225
225
|
#endif
|
|
226
226
|
explicit constexpr CompressedTuple(const Ts&... base)
|
|
227
|
-
: CompressedTuple::CompressedTupleImpl(
|
|
227
|
+
: CompressedTuple::CompressedTupleImpl(std::in_place, base...) {}
|
|
228
228
|
|
|
229
229
|
template <typename First, typename... Vs,
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
std::enable_if_t<
|
|
231
|
+
std::conjunction<
|
|
232
232
|
// Ensure we are not hiding default copy/move constructors.
|
|
233
|
-
|
|
234
|
-
|
|
233
|
+
std::negation<std::is_same<void(CompressedTuple),
|
|
234
|
+
void(std::decay_t<First>)>>,
|
|
235
235
|
internal_compressed_tuple::TupleItemsMoveConstructible<
|
|
236
236
|
CompressedTuple<Ts...>, First, Vs...>>::value,
|
|
237
237
|
bool> = true>
|
|
238
238
|
explicit constexpr CompressedTuple(First&& first, Vs&&... base)
|
|
239
|
-
: CompressedTuple::CompressedTupleImpl(
|
|
239
|
+
: CompressedTuple::CompressedTupleImpl(std::in_place,
|
|
240
240
|
std::forward<First>(first),
|
|
241
241
|
std::forward<Vs>(base)...) {}
|
|
242
242
|
|