@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.224
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/c/stdlib.zig +32 -22
- package/compiler/aro/aro/Compilation.zig +0 -3
- package/compiler/translate-c/ast.zig +5 -2
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +1 -22
- package/docs/wasm/markdown/Parser.zig +5 -9
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Step/Compile.zig +18 -19
- package/std/Build/Step/Run.zig +13 -6
- package/std/Build/Step.zig +0 -3
- package/std/Io/Threaded.zig +3 -0
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +16 -8
- package/std/c.zig +7 -0
- package/std/crypto/ml_kem.zig +0 -15
- package/std/debug/Dwarf.zig +14 -11
- package/std/debug/Pdb.zig +24 -16
- package/std/hash/xxhash.zig +0 -6
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/mem.zig +1 -2
- package/std/os/linux/x86.zig +2 -2
- package/std/os/windows.zig +130 -1
- package/std/simd.zig +4 -21
- package/std/start.zig +4 -3
- package/std/zig/Ast.zig +5 -7
- package/std/zig/AstGen.zig +20 -14
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/ZonGen.zig +13 -21
- package/std/zig/llvm/Builder.zig +2 -2
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -2
- package/std/zon/parse.zig +1 -1
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
package/libcxx/include/set
CHANGED
|
@@ -518,19 +518,19 @@ erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred); // C++20
|
|
|
518
518
|
# include <__algorithm/equal.h>
|
|
519
519
|
# include <__algorithm/lexicographical_compare.h>
|
|
520
520
|
# include <__algorithm/lexicographical_compare_three_way.h>
|
|
521
|
+
# include <__algorithm/specialized_algorithms.h>
|
|
521
522
|
# include <__assert>
|
|
522
523
|
# include <__config>
|
|
523
524
|
# include <__functional/is_transparent.h>
|
|
524
525
|
# include <__functional/operations.h>
|
|
525
|
-
# include <__fwd/set.h>
|
|
526
526
|
# include <__iterator/erase_if_container.h>
|
|
527
527
|
# include <__iterator/iterator_traits.h>
|
|
528
|
-
# include <__iterator/ranges_iterator_traits.h>
|
|
529
528
|
# include <__iterator/reverse_iterator.h>
|
|
530
529
|
# include <__memory/allocator.h>
|
|
531
530
|
# include <__memory/allocator_traits.h>
|
|
532
531
|
# include <__memory_resource/polymorphic_allocator.h>
|
|
533
532
|
# include <__node_handle>
|
|
533
|
+
# include <__ranges/access.h>
|
|
534
534
|
# include <__ranges/concepts.h>
|
|
535
535
|
# include <__ranges/container_compatible_range.h>
|
|
536
536
|
# include <__ranges/from_range.h>
|
|
@@ -538,7 +538,6 @@ erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred); // C++20
|
|
|
538
538
|
# include <__type_traits/container_traits.h>
|
|
539
539
|
# include <__type_traits/enable_if.h>
|
|
540
540
|
# include <__type_traits/is_allocator.h>
|
|
541
|
-
# include <__type_traits/is_nothrow_assignable.h>
|
|
542
541
|
# include <__type_traits/is_nothrow_constructible.h>
|
|
543
542
|
# include <__type_traits/is_same.h>
|
|
544
543
|
# include <__type_traits/is_swappable.h>
|
|
@@ -570,7 +569,10 @@ _LIBCPP_PUSH_MACROS
|
|
|
570
569
|
|
|
571
570
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
572
571
|
|
|
573
|
-
template <class _Key, class _Compare
|
|
572
|
+
template <class _Key, class _Compare = less<_Key>, class _Allocator = allocator<_Key> >
|
|
573
|
+
class multiset;
|
|
574
|
+
|
|
575
|
+
template <class _Key, class _Compare = less<_Key>, class _Allocator = allocator<_Key> >
|
|
574
576
|
class set {
|
|
575
577
|
public:
|
|
576
578
|
// types:
|
|
@@ -660,22 +662,20 @@ public:
|
|
|
660
662
|
: set(from_range, std::forward<_Range>(__range), key_compare(), __a) {}
|
|
661
663
|
# endif
|
|
662
664
|
|
|
663
|
-
_LIBCPP_HIDE_FROM_ABI set(const set& __s)
|
|
665
|
+
_LIBCPP_HIDE_FROM_ABI set(const set& __s) = default;
|
|
664
666
|
|
|
665
667
|
_LIBCPP_HIDE_FROM_ABI set& operator=(const set& __s) = default;
|
|
666
668
|
|
|
667
669
|
# ifndef _LIBCPP_CXX03_LANG
|
|
668
|
-
_LIBCPP_HIDE_FROM_ABI set(set&& __s)
|
|
670
|
+
_LIBCPP_HIDE_FROM_ABI set(set&& __s) = default;
|
|
669
671
|
# endif // _LIBCPP_CXX03_LANG
|
|
670
672
|
|
|
671
673
|
_LIBCPP_HIDE_FROM_ABI explicit set(const allocator_type& __a) : __tree_(__a) {}
|
|
672
674
|
|
|
673
|
-
_LIBCPP_HIDE_FROM_ABI set(const set& __s, const allocator_type&
|
|
674
|
-
insert(__s.begin(), __s.end());
|
|
675
|
-
}
|
|
675
|
+
_LIBCPP_HIDE_FROM_ABI set(const set& __s, const allocator_type& __alloc) : __tree_(__s.__tree_, __alloc) {}
|
|
676
676
|
|
|
677
677
|
# ifndef _LIBCPP_CXX03_LANG
|
|
678
|
-
_LIBCPP_HIDE_FROM_ABI set(set&& __s, const allocator_type&
|
|
678
|
+
_LIBCPP_HIDE_FROM_ABI set(set&& __s, const allocator_type& __alloc) : __tree_(std::move(__s.__tree_), __alloc) {}
|
|
679
679
|
|
|
680
680
|
_LIBCPP_HIDE_FROM_ABI set(initializer_list<value_type> __il, const value_compare& __comp = value_compare())
|
|
681
681
|
: __tree_(__comp) {
|
|
@@ -693,36 +693,38 @@ public:
|
|
|
693
693
|
# endif
|
|
694
694
|
|
|
695
695
|
_LIBCPP_HIDE_FROM_ABI set& operator=(initializer_list<value_type> __il) {
|
|
696
|
-
|
|
696
|
+
clear();
|
|
697
|
+
insert(__il.begin(), __il.end());
|
|
697
698
|
return *this;
|
|
698
699
|
}
|
|
699
700
|
|
|
700
|
-
_LIBCPP_HIDE_FROM_ABI set& operator=(set&& __s)
|
|
701
|
-
__tree_ = std::move(__s.__tree_);
|
|
702
|
-
return *this;
|
|
703
|
-
}
|
|
701
|
+
_LIBCPP_HIDE_FROM_ABI set& operator=(set&& __s) = default;
|
|
704
702
|
# endif // _LIBCPP_CXX03_LANG
|
|
705
703
|
|
|
706
704
|
_LIBCPP_HIDE_FROM_ABI ~set() { static_assert(sizeof(std::__diagnose_non_const_comparator<_Key, _Compare>()), ""); }
|
|
707
705
|
|
|
708
|
-
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
709
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
710
|
-
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
711
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
706
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
707
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
708
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
709
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
712
710
|
|
|
713
|
-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
714
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
715
|
-
|
|
716
|
-
|
|
711
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
712
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
713
|
+
return const_reverse_iterator(end());
|
|
714
|
+
}
|
|
715
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rend() _NOEXCEPT { return reverse_iterator(begin()); }
|
|
716
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const _NOEXCEPT {
|
|
717
|
+
return const_reverse_iterator(begin());
|
|
718
|
+
}
|
|
717
719
|
|
|
718
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
719
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
720
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
721
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
720
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
721
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
722
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
723
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
722
724
|
|
|
723
725
|
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __tree_.size() == 0; }
|
|
724
|
-
_LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
725
|
-
_LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
726
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
727
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
726
728
|
|
|
727
729
|
// modifiers:
|
|
728
730
|
# ifndef _LIBCPP_CXX03_LANG
|
|
@@ -732,28 +734,24 @@ public:
|
|
|
732
734
|
}
|
|
733
735
|
template <class... _Args>
|
|
734
736
|
_LIBCPP_HIDE_FROM_ABI iterator emplace_hint(const_iterator __p, _Args&&... __args) {
|
|
735
|
-
return __tree_.__emplace_hint_unique(__p, std::forward<_Args>(__args)...);
|
|
737
|
+
return __tree_.__emplace_hint_unique(__p, std::forward<_Args>(__args)...).first;
|
|
736
738
|
}
|
|
737
739
|
# endif // _LIBCPP_CXX03_LANG
|
|
738
740
|
|
|
739
741
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(const value_type& __v) { return __tree_.__emplace_unique(__v); }
|
|
740
742
|
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __p, const value_type& __v) {
|
|
741
|
-
return __tree_.__emplace_hint_unique(__p, __v);
|
|
743
|
+
return __tree_.__emplace_hint_unique(__p, __v).first;
|
|
742
744
|
}
|
|
743
745
|
|
|
744
746
|
template <class _InputIterator>
|
|
745
|
-
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator
|
|
746
|
-
|
|
747
|
-
__tree_.__emplace_hint_unique(__e, *__f);
|
|
747
|
+
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator __first, _InputIterator __last) {
|
|
748
|
+
__tree_.__insert_range_unique(__first, __last);
|
|
748
749
|
}
|
|
749
750
|
|
|
750
751
|
# if _LIBCPP_STD_VER >= 23
|
|
751
752
|
template <_ContainerCompatibleRange<value_type> _Range>
|
|
752
753
|
_LIBCPP_HIDE_FROM_ABI void insert_range(_Range&& __range) {
|
|
753
|
-
|
|
754
|
-
for (auto&& __element : __range) {
|
|
755
|
-
__tree_.__emplace_hint_unique(__end, std::forward<decltype(__element)>(__element));
|
|
756
|
-
}
|
|
754
|
+
__tree_.__insert_range_unique(ranges::begin(__range), ranges::end(__range));
|
|
757
755
|
}
|
|
758
756
|
# endif
|
|
759
757
|
|
|
@@ -763,7 +761,7 @@ public:
|
|
|
763
761
|
}
|
|
764
762
|
|
|
765
763
|
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __p, value_type&& __v) {
|
|
766
|
-
return __tree_.__emplace_hint_unique(__p, std::move(__v));
|
|
764
|
+
return __tree_.__emplace_hint_unique(__p, std::move(__v)).first;
|
|
767
765
|
}
|
|
768
766
|
|
|
769
767
|
_LIBCPP_HIDE_FROM_ABI void insert(initializer_list<value_type> __il) { insert(__il.begin(), __il.end()); }
|
|
@@ -785,10 +783,10 @@ public:
|
|
|
785
783
|
"node_type with incompatible allocator passed to set::insert()");
|
|
786
784
|
return __tree_.template __node_handle_insert_unique<node_type>(__hint, std::move(__nh));
|
|
787
785
|
}
|
|
788
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
786
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
789
787
|
return __tree_.template __node_handle_extract<node_type>(__key);
|
|
790
788
|
}
|
|
791
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
789
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
792
790
|
return __tree_.template __node_handle_extract<node_type>(__it);
|
|
793
791
|
}
|
|
794
792
|
template <class _Compare2>
|
|
@@ -819,101 +817,120 @@ public:
|
|
|
819
817
|
|
|
820
818
|
_LIBCPP_HIDE_FROM_ABI void swap(set& __s) _NOEXCEPT_(__is_nothrow_swappable_v<__base>) { __tree_.swap(__s.__tree_); }
|
|
821
819
|
|
|
822
|
-
_LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT { return __tree_.__alloc(); }
|
|
823
|
-
_LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp(); }
|
|
824
|
-
_LIBCPP_HIDE_FROM_ABI value_compare value_comp() const { return __tree_.value_comp(); }
|
|
820
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT { return __tree_.__alloc(); }
|
|
821
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp(); }
|
|
822
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI value_compare value_comp() const { return __tree_.value_comp(); }
|
|
825
823
|
|
|
826
824
|
// set operations:
|
|
827
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
828
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
825
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
826
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
829
827
|
# if _LIBCPP_STD_VER >= 14
|
|
830
828
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
831
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
829
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
832
830
|
return __tree_.find(__k);
|
|
833
831
|
}
|
|
834
832
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
835
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
833
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
836
834
|
return __tree_.find(__k);
|
|
837
835
|
}
|
|
838
836
|
# endif
|
|
839
837
|
|
|
840
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
838
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
839
|
+
return __tree_.__count_unique(__k);
|
|
840
|
+
}
|
|
841
841
|
# if _LIBCPP_STD_VER >= 14
|
|
842
842
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
843
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
843
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
844
844
|
return __tree_.__count_multi(__k);
|
|
845
845
|
}
|
|
846
846
|
# endif
|
|
847
847
|
|
|
848
848
|
# if _LIBCPP_STD_VER >= 20
|
|
849
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
849
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
850
850
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
851
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
851
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
852
852
|
return find(__k) != end();
|
|
853
853
|
}
|
|
854
854
|
# endif // _LIBCPP_STD_VER >= 20
|
|
855
855
|
|
|
856
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
857
|
-
|
|
856
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
857
|
+
return __tree_.__lower_bound_unique(__k);
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
|
|
861
|
+
return __tree_.__lower_bound_unique(__k);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// The transparent versions of the lookup functions use the _multi version, since a non-element key is allowed to
|
|
865
|
+
// match multiple elements.
|
|
858
866
|
# if _LIBCPP_STD_VER >= 14
|
|
859
867
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
860
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
861
|
-
return __tree_.
|
|
868
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
869
|
+
return __tree_.__lower_bound_multi(__k);
|
|
862
870
|
}
|
|
863
871
|
|
|
864
872
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
865
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
866
|
-
return __tree_.
|
|
873
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
874
|
+
return __tree_.__lower_bound_multi(__k);
|
|
867
875
|
}
|
|
868
876
|
# endif
|
|
869
877
|
|
|
870
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
871
|
-
|
|
878
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
879
|
+
return __tree_.__upper_bound_unique(__k);
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
|
|
883
|
+
return __tree_.__upper_bound_unique(__k);
|
|
884
|
+
}
|
|
885
|
+
|
|
872
886
|
# if _LIBCPP_STD_VER >= 14
|
|
873
887
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
874
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
875
|
-
return __tree_.
|
|
888
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
889
|
+
return __tree_.__upper_bound_multi(__k);
|
|
876
890
|
}
|
|
877
891
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
878
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
879
|
-
return __tree_.
|
|
892
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
893
|
+
return __tree_.__upper_bound_multi(__k);
|
|
880
894
|
}
|
|
881
895
|
# endif
|
|
882
896
|
|
|
883
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
897
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
884
898
|
return __tree_.__equal_range_unique(__k);
|
|
885
899
|
}
|
|
886
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
900
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
887
901
|
return __tree_.__equal_range_unique(__k);
|
|
888
902
|
}
|
|
889
903
|
# if _LIBCPP_STD_VER >= 14
|
|
890
904
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
891
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
905
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
892
906
|
return __tree_.__equal_range_multi(__k);
|
|
893
907
|
}
|
|
894
908
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
895
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
909
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
896
910
|
return __tree_.__equal_range_multi(__k);
|
|
897
911
|
}
|
|
898
912
|
# endif
|
|
913
|
+
|
|
914
|
+
template <class, class...>
|
|
915
|
+
friend struct __specialized_algorithm;
|
|
899
916
|
};
|
|
900
917
|
|
|
901
918
|
# if _LIBCPP_STD_VER >= 17
|
|
902
919
|
template <class _InputIterator,
|
|
903
|
-
class _Compare = less<
|
|
904
|
-
class _Allocator = allocator<
|
|
920
|
+
class _Compare = less<__iterator_value_type<_InputIterator>>,
|
|
921
|
+
class _Allocator = allocator<__iterator_value_type<_InputIterator>>,
|
|
905
922
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
906
|
-
class = enable_if_t<
|
|
907
|
-
class = enable_if_t<!
|
|
923
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>,
|
|
924
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>>
|
|
908
925
|
set(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
|
|
909
|
-
-> set<
|
|
926
|
+
-> set<__iterator_value_type<_InputIterator>, _Compare, _Allocator>;
|
|
910
927
|
|
|
911
928
|
# if _LIBCPP_STD_VER >= 23
|
|
912
929
|
template <ranges::input_range _Range,
|
|
913
930
|
class _Compare = less<ranges::range_value_t<_Range>>,
|
|
914
931
|
class _Allocator = allocator<ranges::range_value_t<_Range>>,
|
|
915
|
-
class = enable_if_t<
|
|
916
|
-
class = enable_if_t<!
|
|
932
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>,
|
|
933
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>>
|
|
917
934
|
set(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator())
|
|
918
935
|
-> set<ranges::range_value_t<_Range>, _Compare, _Allocator>;
|
|
919
936
|
# endif
|
|
@@ -921,41 +938,43 @@ set(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator())
|
|
|
921
938
|
template <class _Key,
|
|
922
939
|
class _Compare = less<_Key>,
|
|
923
940
|
class _Allocator = allocator<_Key>,
|
|
924
|
-
class = enable_if_t<!
|
|
925
|
-
class = enable_if_t<
|
|
941
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
942
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
926
943
|
set(initializer_list<_Key>, _Compare = _Compare(), _Allocator = _Allocator()) -> set<_Key, _Compare, _Allocator>;
|
|
927
944
|
|
|
928
945
|
template <class _InputIterator,
|
|
929
946
|
class _Allocator,
|
|
930
947
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
931
|
-
class = enable_if_t<
|
|
932
|
-
set(_InputIterator,
|
|
933
|
-
_InputIterator
|
|
934
|
-
_Allocator) -> set<__iter_value_type<_InputIterator>, less<__iter_value_type<_InputIterator>>, _Allocator>;
|
|
948
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
949
|
+
set(_InputIterator, _InputIterator, _Allocator)
|
|
950
|
+
-> set<__iterator_value_type<_InputIterator>, less<__iterator_value_type<_InputIterator>>, _Allocator>;
|
|
935
951
|
|
|
936
952
|
# if _LIBCPP_STD_VER >= 23
|
|
937
|
-
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<
|
|
938
|
-
set(from_range_t,
|
|
939
|
-
_Range
|
|
940
|
-
_Allocator) -> set<ranges::range_value_t<_Range>, less<ranges::range_value_t<_Range>>, _Allocator>;
|
|
953
|
+
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
954
|
+
set(from_range_t, _Range&&, _Allocator)
|
|
955
|
+
-> set<ranges::range_value_t<_Range>, less<ranges::range_value_t<_Range>>, _Allocator>;
|
|
941
956
|
# endif
|
|
942
957
|
|
|
943
|
-
template <class _Key, class _Allocator, class = enable_if_t<
|
|
958
|
+
template <class _Key, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
944
959
|
set(initializer_list<_Key>, _Allocator) -> set<_Key, less<_Key>, _Allocator>;
|
|
945
960
|
# endif
|
|
946
961
|
|
|
947
|
-
#
|
|
962
|
+
# if _LIBCPP_STD_VER >= 14
|
|
963
|
+
template <class _Alg, class _Key, class _Compare, class _Allocator>
|
|
964
|
+
struct __specialized_algorithm<_Alg, __single_range<set<_Key, _Compare, _Allocator>>> {
|
|
965
|
+
using __set _LIBCPP_NODEBUG = set<_Key, _Compare, _Allocator>;
|
|
948
966
|
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
if (__a != __s.get_allocator()) {
|
|
952
|
-
const_iterator __e = cend();
|
|
953
|
-
while (!__s.empty())
|
|
954
|
-
insert(__e, std::move(__s.__tree_.remove(__s.begin())->__value_));
|
|
955
|
-
}
|
|
956
|
-
}
|
|
967
|
+
static const bool __has_algorithm =
|
|
968
|
+
__specialized_algorithm<_Alg, __single_range<typename __set::__base>>::__has_algorithm;
|
|
957
969
|
|
|
958
|
-
|
|
970
|
+
// set's begin() and end() are identical with and without const qualification
|
|
971
|
+
template <class... _Args>
|
|
972
|
+
_LIBCPP_HIDE_FROM_ABI static auto operator()(const __set& __set, _Args&&... __args) {
|
|
973
|
+
return __specialized_algorithm<_Alg, __single_range<typename __set::__base>>()(
|
|
974
|
+
__set.__tree_, std::forward<_Args>(__args)...);
|
|
975
|
+
}
|
|
976
|
+
};
|
|
977
|
+
# endif
|
|
959
978
|
|
|
960
979
|
template <class _Key, class _Compare, class _Allocator>
|
|
961
980
|
inline _LIBCPP_HIDE_FROM_ABI bool
|
|
@@ -1119,24 +1138,17 @@ public:
|
|
|
1119
1138
|
: multiset(from_range, std::forward<_Range>(__range), key_compare(), __a) {}
|
|
1120
1139
|
# endif
|
|
1121
1140
|
|
|
1122
|
-
_LIBCPP_HIDE_FROM_ABI multiset(const multiset& __s)
|
|
1123
|
-
: __tree_(__s.__tree_.value_comp(),
|
|
1124
|
-
__alloc_traits::select_on_container_copy_construction(__s.__tree_.__alloc())) {
|
|
1125
|
-
insert(__s.begin(), __s.end());
|
|
1126
|
-
}
|
|
1141
|
+
_LIBCPP_HIDE_FROM_ABI multiset(const multiset& __s) = default;
|
|
1127
1142
|
|
|
1128
1143
|
_LIBCPP_HIDE_FROM_ABI multiset& operator=(const multiset& __s) = default;
|
|
1129
1144
|
|
|
1130
1145
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1131
|
-
_LIBCPP_HIDE_FROM_ABI multiset(multiset&& __s)
|
|
1146
|
+
_LIBCPP_HIDE_FROM_ABI multiset(multiset&& __s) = default;
|
|
1132
1147
|
|
|
1133
|
-
_LIBCPP_HIDE_FROM_ABI multiset(multiset&& __s, const allocator_type& __a)
|
|
1148
|
+
_LIBCPP_HIDE_FROM_ABI multiset(multiset&& __s, const allocator_type& __a) : __tree_(std::move(__s.__tree_), __a) {}
|
|
1134
1149
|
# endif // _LIBCPP_CXX03_LANG
|
|
1135
1150
|
_LIBCPP_HIDE_FROM_ABI explicit multiset(const allocator_type& __a) : __tree_(__a) {}
|
|
1136
|
-
_LIBCPP_HIDE_FROM_ABI multiset(const multiset& __s, const allocator_type& __a)
|
|
1137
|
-
: __tree_(__s.__tree_.value_comp(), __a) {
|
|
1138
|
-
insert(__s.begin(), __s.end());
|
|
1139
|
-
}
|
|
1151
|
+
_LIBCPP_HIDE_FROM_ABI multiset(const multiset& __s, const allocator_type& __a) : __tree_(__s.__tree_, __a) {}
|
|
1140
1152
|
|
|
1141
1153
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1142
1154
|
_LIBCPP_HIDE_FROM_ABI multiset(initializer_list<value_type> __il, const value_compare& __comp = value_compare())
|
|
@@ -1156,38 +1168,40 @@ public:
|
|
|
1156
1168
|
# endif
|
|
1157
1169
|
|
|
1158
1170
|
_LIBCPP_HIDE_FROM_ABI multiset& operator=(initializer_list<value_type> __il) {
|
|
1159
|
-
|
|
1171
|
+
clear();
|
|
1172
|
+
insert(__il.begin(), __il.end());
|
|
1160
1173
|
return *this;
|
|
1161
1174
|
}
|
|
1162
1175
|
|
|
1163
|
-
_LIBCPP_HIDE_FROM_ABI multiset& operator=(multiset&& __s)
|
|
1164
|
-
__tree_ = std::move(__s.__tree_);
|
|
1165
|
-
return *this;
|
|
1166
|
-
}
|
|
1176
|
+
_LIBCPP_HIDE_FROM_ABI multiset& operator=(multiset&& __s) = default;
|
|
1167
1177
|
# endif // _LIBCPP_CXX03_LANG
|
|
1168
1178
|
|
|
1169
1179
|
_LIBCPP_HIDE_FROM_ABI ~multiset() {
|
|
1170
1180
|
static_assert(sizeof(std::__diagnose_non_const_comparator<_Key, _Compare>()), "");
|
|
1171
1181
|
}
|
|
1172
1182
|
|
|
1173
|
-
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1174
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1175
|
-
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1176
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1183
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1184
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1185
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1186
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1177
1187
|
|
|
1178
|
-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1179
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1180
|
-
|
|
1181
|
-
|
|
1188
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1189
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1190
|
+
return const_reverse_iterator(end());
|
|
1191
|
+
}
|
|
1192
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rend() _NOEXCEPT { return reverse_iterator(begin()); }
|
|
1193
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const _NOEXCEPT {
|
|
1194
|
+
return const_reverse_iterator(begin());
|
|
1195
|
+
}
|
|
1182
1196
|
|
|
1183
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1184
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1185
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1186
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1197
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1198
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1199
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1200
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1187
1201
|
|
|
1188
1202
|
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __tree_.size() == 0; }
|
|
1189
|
-
_LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1190
|
-
_LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1203
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1204
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1191
1205
|
|
|
1192
1206
|
// modifiers:
|
|
1193
1207
|
# ifndef _LIBCPP_CXX03_LANG
|
|
@@ -1207,18 +1221,14 @@ public:
|
|
|
1207
1221
|
}
|
|
1208
1222
|
|
|
1209
1223
|
template <class _InputIterator>
|
|
1210
|
-
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator
|
|
1211
|
-
|
|
1212
|
-
__tree_.__emplace_hint_multi(__e, *__f);
|
|
1224
|
+
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator __first, _InputIterator __last) {
|
|
1225
|
+
__tree_.__insert_range_multi(__first, __last);
|
|
1213
1226
|
}
|
|
1214
1227
|
|
|
1215
1228
|
# if _LIBCPP_STD_VER >= 23
|
|
1216
1229
|
template <_ContainerCompatibleRange<value_type> _Range>
|
|
1217
1230
|
_LIBCPP_HIDE_FROM_ABI void insert_range(_Range&& __range) {
|
|
1218
|
-
|
|
1219
|
-
for (auto&& __element : __range) {
|
|
1220
|
-
__tree_.__emplace_hint_multi(__end, std::forward<decltype(__element)>(__element));
|
|
1221
|
-
}
|
|
1231
|
+
__tree_.__insert_range_multi(ranges::begin(__range), ranges::end(__range));
|
|
1222
1232
|
}
|
|
1223
1233
|
# endif
|
|
1224
1234
|
|
|
@@ -1248,10 +1258,10 @@ public:
|
|
|
1248
1258
|
"node_type with incompatible allocator passed to multiset::insert()");
|
|
1249
1259
|
return __tree_.template __node_handle_insert_multi<node_type>(__hint, std::move(__nh));
|
|
1250
1260
|
}
|
|
1251
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1261
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1252
1262
|
return __tree_.template __node_handle_extract<node_type>(__key);
|
|
1253
1263
|
}
|
|
1254
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1264
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1255
1265
|
return __tree_.template __node_handle_extract<node_type>(__it);
|
|
1256
1266
|
}
|
|
1257
1267
|
template <class _Compare2>
|
|
@@ -1284,101 +1294,118 @@ public:
|
|
|
1284
1294
|
__tree_.swap(__s.__tree_);
|
|
1285
1295
|
}
|
|
1286
1296
|
|
|
1287
|
-
_LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT { return __tree_.__alloc(); }
|
|
1288
|
-
_LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp(); }
|
|
1289
|
-
_LIBCPP_HIDE_FROM_ABI value_compare value_comp() const { return __tree_.value_comp(); }
|
|
1297
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT { return __tree_.__alloc(); }
|
|
1298
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp(); }
|
|
1299
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI value_compare value_comp() const { return __tree_.value_comp(); }
|
|
1290
1300
|
|
|
1291
1301
|
// set operations:
|
|
1292
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1293
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1302
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1303
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1294
1304
|
# if _LIBCPP_STD_VER >= 14
|
|
1295
1305
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1296
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
1306
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
1297
1307
|
return __tree_.find(__k);
|
|
1298
1308
|
}
|
|
1299
1309
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1300
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
1310
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
1301
1311
|
return __tree_.find(__k);
|
|
1302
1312
|
}
|
|
1303
1313
|
# endif
|
|
1304
1314
|
|
|
1305
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1315
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1316
|
+
return __tree_.__count_multi(__k);
|
|
1317
|
+
}
|
|
1306
1318
|
# if _LIBCPP_STD_VER >= 14
|
|
1307
1319
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1308
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1320
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1309
1321
|
return __tree_.__count_multi(__k);
|
|
1310
1322
|
}
|
|
1311
1323
|
# endif
|
|
1312
1324
|
|
|
1313
1325
|
# if _LIBCPP_STD_VER >= 20
|
|
1314
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1326
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1315
1327
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1316
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
1328
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
1317
1329
|
return find(__k) != end();
|
|
1318
1330
|
}
|
|
1319
1331
|
# endif // _LIBCPP_STD_VER >= 20
|
|
1320
1332
|
|
|
1321
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1322
|
-
|
|
1333
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1334
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
|
|
1338
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1323
1341
|
# if _LIBCPP_STD_VER >= 14
|
|
1324
1342
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1325
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
1326
|
-
return __tree_.
|
|
1343
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
1344
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1327
1345
|
}
|
|
1328
1346
|
|
|
1329
1347
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1330
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
1331
|
-
return __tree_.
|
|
1348
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
1349
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1332
1350
|
}
|
|
1333
1351
|
# endif
|
|
1334
1352
|
|
|
1335
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1336
|
-
|
|
1353
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1354
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
|
|
1358
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1337
1361
|
# if _LIBCPP_STD_VER >= 14
|
|
1338
1362
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1339
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1340
|
-
return __tree_.
|
|
1363
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1364
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1341
1365
|
}
|
|
1342
1366
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1343
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
1344
|
-
return __tree_.
|
|
1367
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
1368
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1345
1369
|
}
|
|
1346
1370
|
# endif
|
|
1347
1371
|
|
|
1348
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1372
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1349
1373
|
return __tree_.__equal_range_multi(__k);
|
|
1350
1374
|
}
|
|
1351
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1375
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1352
1376
|
return __tree_.__equal_range_multi(__k);
|
|
1353
1377
|
}
|
|
1354
1378
|
# if _LIBCPP_STD_VER >= 14
|
|
1355
1379
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1356
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1380
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1357
1381
|
return __tree_.__equal_range_multi(__k);
|
|
1358
1382
|
}
|
|
1359
1383
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1360
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1384
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1361
1385
|
return __tree_.__equal_range_multi(__k);
|
|
1362
1386
|
}
|
|
1363
1387
|
# endif
|
|
1388
|
+
|
|
1389
|
+
template <class, class...>
|
|
1390
|
+
friend struct __specialized_algorithm;
|
|
1364
1391
|
};
|
|
1365
1392
|
|
|
1366
1393
|
# if _LIBCPP_STD_VER >= 17
|
|
1367
1394
|
template <class _InputIterator,
|
|
1368
|
-
class _Compare = less<
|
|
1369
|
-
class _Allocator = allocator<
|
|
1395
|
+
class _Compare = less<__iterator_value_type<_InputIterator>>,
|
|
1396
|
+
class _Allocator = allocator<__iterator_value_type<_InputIterator>>,
|
|
1370
1397
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1371
|
-
class = enable_if_t<
|
|
1372
|
-
class = enable_if_t<!
|
|
1398
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>,
|
|
1399
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>>
|
|
1373
1400
|
multiset(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1374
|
-
-> multiset<
|
|
1401
|
+
-> multiset<__iterator_value_type<_InputIterator>, _Compare, _Allocator>;
|
|
1375
1402
|
|
|
1376
1403
|
# if _LIBCPP_STD_VER >= 23
|
|
1377
1404
|
template <ranges::input_range _Range,
|
|
1378
1405
|
class _Compare = less<ranges::range_value_t<_Range>>,
|
|
1379
1406
|
class _Allocator = allocator<ranges::range_value_t<_Range>>,
|
|
1380
|
-
class = enable_if_t<
|
|
1381
|
-
class = enable_if_t<!
|
|
1407
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>,
|
|
1408
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>>
|
|
1382
1409
|
multiset(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1383
1410
|
-> multiset<ranges::range_value_t<_Range>, _Compare, _Allocator>;
|
|
1384
1411
|
# endif
|
|
@@ -1386,43 +1413,44 @@ multiset(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator(
|
|
|
1386
1413
|
template <class _Key,
|
|
1387
1414
|
class _Compare = less<_Key>,
|
|
1388
1415
|
class _Allocator = allocator<_Key>,
|
|
1389
|
-
class = enable_if_t<
|
|
1390
|
-
class = enable_if_t<!
|
|
1391
|
-
multiset(initializer_list<_Key>,
|
|
1392
|
-
|
|
1393
|
-
_Allocator = _Allocator()) -> multiset<_Key, _Compare, _Allocator>;
|
|
1416
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>,
|
|
1417
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>>
|
|
1418
|
+
multiset(initializer_list<_Key>, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1419
|
+
-> multiset<_Key, _Compare, _Allocator>;
|
|
1394
1420
|
|
|
1395
1421
|
template <class _InputIterator,
|
|
1396
1422
|
class _Allocator,
|
|
1397
1423
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1398
|
-
class = enable_if_t<
|
|
1424
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1399
1425
|
multiset(_InputIterator, _InputIterator, _Allocator)
|
|
1400
|
-
-> multiset<
|
|
1426
|
+
-> multiset<__iterator_value_type<_InputIterator>, less<__iterator_value_type<_InputIterator>>, _Allocator>;
|
|
1401
1427
|
|
|
1402
1428
|
# if _LIBCPP_STD_VER >= 23
|
|
1403
|
-
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<
|
|
1404
|
-
multiset(from_range_t,
|
|
1405
|
-
|
|
1406
|
-
_Allocator) -> multiset<ranges::range_value_t<_Range>, less<ranges::range_value_t<_Range>>, _Allocator>;
|
|
1429
|
+
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1430
|
+
multiset(from_range_t, _Range&&, _Allocator)
|
|
1431
|
+
-> multiset<ranges::range_value_t<_Range>, less<ranges::range_value_t<_Range>>, _Allocator>;
|
|
1407
1432
|
# endif
|
|
1408
1433
|
|
|
1409
|
-
template <class _Key, class _Allocator, class = enable_if_t<
|
|
1434
|
+
template <class _Key, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1410
1435
|
multiset(initializer_list<_Key>, _Allocator) -> multiset<_Key, less<_Key>, _Allocator>;
|
|
1411
1436
|
# endif
|
|
1412
1437
|
|
|
1413
|
-
#
|
|
1438
|
+
# if _LIBCPP_STD_VER >= 14
|
|
1439
|
+
template <class _Alg, class _Key, class _Compare, class _Allocator>
|
|
1440
|
+
struct __specialized_algorithm<_Alg, __single_range<multiset<_Key, _Compare, _Allocator>>> {
|
|
1441
|
+
using __set _LIBCPP_NODEBUG = multiset<_Key, _Compare, _Allocator>;
|
|
1414
1442
|
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
: __tree_(std::move(__s.__tree_), __a) {
|
|
1418
|
-
if (__a != __s.get_allocator()) {
|
|
1419
|
-
const_iterator __e = cend();
|
|
1420
|
-
while (!__s.empty())
|
|
1421
|
-
insert(__e, std::move(__s.__tree_.remove(__s.begin())->__value_));
|
|
1422
|
-
}
|
|
1423
|
-
}
|
|
1443
|
+
static const bool __has_algorithm =
|
|
1444
|
+
__specialized_algorithm<_Alg, __single_range<typename __set::__base>>::__has_algorithm;
|
|
1424
1445
|
|
|
1425
|
-
|
|
1446
|
+
// set's begin() and end() are identical with and without const qualification
|
|
1447
|
+
template <class... _Args>
|
|
1448
|
+
_LIBCPP_HIDE_FROM_ABI static auto operator()(const __set& __set, _Args&&... __args) {
|
|
1449
|
+
return __specialized_algorithm<_Alg, __single_range<typename __set::__base>>()(
|
|
1450
|
+
__set.__tree_, std::forward<_Args>(__args)...);
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
# endif
|
|
1426
1454
|
|
|
1427
1455
|
template <class _Key, class _Compare, class _Allocator>
|
|
1428
1456
|
inline _LIBCPP_HIDE_FROM_ABI bool
|