@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.292
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/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- 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/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- 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/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +2 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- 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 +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- 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 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- 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/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
package/libcxx/include/map
CHANGED
|
@@ -577,12 +577,12 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
|
|
|
577
577
|
# include <__algorithm/equal.h>
|
|
578
578
|
# include <__algorithm/lexicographical_compare.h>
|
|
579
579
|
# include <__algorithm/lexicographical_compare_three_way.h>
|
|
580
|
+
# include <__algorithm/specialized_algorithms.h>
|
|
580
581
|
# include <__assert>
|
|
581
582
|
# include <__config>
|
|
582
583
|
# include <__functional/binary_function.h>
|
|
583
584
|
# include <__functional/is_transparent.h>
|
|
584
585
|
# include <__functional/operations.h>
|
|
585
|
-
# include <__fwd/map.h>
|
|
586
586
|
# include <__iterator/erase_if_container.h>
|
|
587
587
|
# include <__iterator/iterator_traits.h>
|
|
588
588
|
# include <__iterator/ranges_iterator_traits.h>
|
|
@@ -590,19 +590,23 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
|
|
|
590
590
|
# include <__memory/addressof.h>
|
|
591
591
|
# include <__memory/allocator.h>
|
|
592
592
|
# include <__memory/allocator_traits.h>
|
|
593
|
+
# include <__memory/compressed_pair.h>
|
|
593
594
|
# include <__memory/pointer_traits.h>
|
|
594
595
|
# include <__memory/unique_ptr.h>
|
|
595
596
|
# include <__memory_resource/polymorphic_allocator.h>
|
|
596
597
|
# include <__node_handle>
|
|
598
|
+
# include <__ranges/access.h>
|
|
597
599
|
# include <__ranges/concepts.h>
|
|
598
600
|
# include <__ranges/container_compatible_range.h>
|
|
599
601
|
# include <__ranges/from_range.h>
|
|
600
602
|
# include <__tree>
|
|
601
603
|
# include <__type_traits/container_traits.h>
|
|
602
604
|
# include <__type_traits/is_allocator.h>
|
|
605
|
+
# include <__type_traits/make_transparent.h>
|
|
603
606
|
# include <__type_traits/remove_const.h>
|
|
604
607
|
# include <__type_traits/type_identity.h>
|
|
605
608
|
# include <__utility/forward.h>
|
|
609
|
+
# include <__utility/lazy_synth_three_way_comparator.h>
|
|
606
610
|
# include <__utility/pair.h>
|
|
607
611
|
# include <__utility/piecewise_construct.h>
|
|
608
612
|
# include <__utility/swap.h>
|
|
@@ -632,47 +636,9 @@ _LIBCPP_PUSH_MACROS
|
|
|
632
636
|
|
|
633
637
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
634
638
|
|
|
635
|
-
template <class _Key,
|
|
636
|
-
class _CP,
|
|
637
|
-
class _Compare,
|
|
638
|
-
bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value>
|
|
639
|
-
class __map_value_compare : private _Compare {
|
|
640
|
-
public:
|
|
641
|
-
_LIBCPP_HIDE_FROM_ABI __map_value_compare() _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value)
|
|
642
|
-
: _Compare() {}
|
|
643
|
-
_LIBCPP_HIDE_FROM_ABI __map_value_compare(_Compare __c) _NOEXCEPT_(is_nothrow_copy_constructible<_Compare>::value)
|
|
644
|
-
: _Compare(__c) {}
|
|
645
|
-
_LIBCPP_HIDE_FROM_ABI const _Compare& key_comp() const _NOEXCEPT { return *this; }
|
|
646
|
-
_LIBCPP_HIDE_FROM_ABI bool operator()(const _CP& __x, const _CP& __y) const {
|
|
647
|
-
return static_cast<const _Compare&>(*this)(__x.first, __y.first);
|
|
648
|
-
}
|
|
649
|
-
_LIBCPP_HIDE_FROM_ABI bool operator()(const _CP& __x, const _Key& __y) const {
|
|
650
|
-
return static_cast<const _Compare&>(*this)(__x.first, __y);
|
|
651
|
-
}
|
|
652
|
-
_LIBCPP_HIDE_FROM_ABI bool operator()(const _Key& __x, const _CP& __y) const {
|
|
653
|
-
return static_cast<const _Compare&>(*this)(__x, __y.first);
|
|
654
|
-
}
|
|
655
|
-
_LIBCPP_HIDE_FROM_ABI void swap(__map_value_compare& __y) _NOEXCEPT_(__is_nothrow_swappable_v<_Compare>) {
|
|
656
|
-
using std::swap;
|
|
657
|
-
swap(static_cast<_Compare&>(*this), static_cast<_Compare&>(__y));
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
# if _LIBCPP_STD_VER >= 14
|
|
661
|
-
template <typename _K2>
|
|
662
|
-
_LIBCPP_HIDE_FROM_ABI bool operator()(const _K2& __x, const _CP& __y) const {
|
|
663
|
-
return static_cast<const _Compare&>(*this)(__x, __y.first);
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
template <typename _K2>
|
|
667
|
-
_LIBCPP_HIDE_FROM_ABI bool operator()(const _CP& __x, const _K2& __y) const {
|
|
668
|
-
return static_cast<const _Compare&>(*this)(__x.first, __y);
|
|
669
|
-
}
|
|
670
|
-
# endif
|
|
671
|
-
};
|
|
672
|
-
|
|
673
639
|
template <class _Key, class _CP, class _Compare>
|
|
674
|
-
class __map_value_compare
|
|
675
|
-
_Compare __comp_;
|
|
640
|
+
class __map_value_compare {
|
|
641
|
+
_LIBCPP_COMPRESSED_ELEMENT(_Compare, __comp_);
|
|
676
642
|
|
|
677
643
|
public:
|
|
678
644
|
_LIBCPP_HIDE_FROM_ABI __map_value_compare() _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value)
|
|
@@ -684,7 +650,7 @@ public:
|
|
|
684
650
|
_LIBCPP_HIDE_FROM_ABI bool operator()(const _CP& __x, const _CP& __y) const { return __comp_(__x.first, __y.first); }
|
|
685
651
|
_LIBCPP_HIDE_FROM_ABI bool operator()(const _CP& __x, const _Key& __y) const { return __comp_(__x.first, __y); }
|
|
686
652
|
_LIBCPP_HIDE_FROM_ABI bool operator()(const _Key& __x, const _CP& __y) const { return __comp_(__x, __y.first); }
|
|
687
|
-
void swap(__map_value_compare& __y) _NOEXCEPT_(__is_nothrow_swappable_v<_Compare>) {
|
|
653
|
+
_LIBCPP_HIDE_FROM_ABI void swap(__map_value_compare& __y) _NOEXCEPT_(__is_nothrow_swappable_v<_Compare>) {
|
|
688
654
|
using std::swap;
|
|
689
655
|
swap(__comp_, __y.__comp_);
|
|
690
656
|
}
|
|
@@ -702,9 +668,58 @@ public:
|
|
|
702
668
|
# endif
|
|
703
669
|
};
|
|
704
670
|
|
|
705
|
-
template <class _Key, class
|
|
671
|
+
template <class _Key, class _MapValueT, class _Compare>
|
|
672
|
+
struct __make_transparent<_Key, __map_value_compare<_Key, _MapValueT, _Compare> > {
|
|
673
|
+
using type _LIBCPP_NODEBUG = __map_value_compare<_Key, _MapValueT, __make_transparent_t<_Key, _Compare> >;
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
# if _LIBCPP_STD_VER >= 14
|
|
677
|
+
template <class _MapValueT, class _Key, class _Compare>
|
|
678
|
+
struct __lazy_synth_three_way_comparator<__map_value_compare<_Key, _MapValueT, _Compare>, _MapValueT, _MapValueT> {
|
|
679
|
+
__lazy_synth_three_way_comparator<_Compare, _Key, _Key> __comp_;
|
|
680
|
+
|
|
681
|
+
__lazy_synth_three_way_comparator(
|
|
682
|
+
_LIBCPP_CTOR_LIFETIMEBOUND const __map_value_compare<_Key, _MapValueT, _Compare>& __comp)
|
|
683
|
+
: __comp_(__comp.key_comp()) {}
|
|
684
|
+
|
|
685
|
+
_LIBCPP_HIDE_FROM_ABI auto
|
|
686
|
+
operator()(_LIBCPP_LIFETIMEBOUND const _MapValueT& __lhs, _LIBCPP_LIFETIMEBOUND const _MapValueT& __rhs) const {
|
|
687
|
+
return __comp_(__lhs.first, __rhs.first);
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
|
|
691
|
+
template <class _MapValueT, class _Key, class _TransparentKey, class _Compare>
|
|
692
|
+
struct __lazy_synth_three_way_comparator<__map_value_compare<_Key, _MapValueT, _Compare>, _TransparentKey, _MapValueT> {
|
|
693
|
+
__lazy_synth_three_way_comparator<_Compare, _TransparentKey, _Key> __comp_;
|
|
694
|
+
|
|
695
|
+
__lazy_synth_three_way_comparator(
|
|
696
|
+
_LIBCPP_CTOR_LIFETIMEBOUND const __map_value_compare<_Key, _MapValueT, _Compare>& __comp)
|
|
697
|
+
: __comp_(__comp.key_comp()) {}
|
|
698
|
+
|
|
699
|
+
_LIBCPP_HIDE_FROM_ABI auto
|
|
700
|
+
operator()(_LIBCPP_LIFETIMEBOUND const _TransparentKey& __lhs, _LIBCPP_LIFETIMEBOUND const _MapValueT& __rhs) const {
|
|
701
|
+
return __comp_(__lhs, __rhs.first);
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
template <class _MapValueT, class _Key, class _TransparentKey, class _Compare>
|
|
706
|
+
struct __lazy_synth_three_way_comparator<__map_value_compare<_Key, _MapValueT, _Compare>, _MapValueT, _TransparentKey> {
|
|
707
|
+
__lazy_synth_three_way_comparator<_Compare, _Key, _TransparentKey> __comp_;
|
|
708
|
+
|
|
709
|
+
__lazy_synth_three_way_comparator(
|
|
710
|
+
_LIBCPP_CTOR_LIFETIMEBOUND const __map_value_compare<_Key, _MapValueT, _Compare>& __comp)
|
|
711
|
+
: __comp_(__comp.key_comp()) {}
|
|
712
|
+
|
|
713
|
+
_LIBCPP_HIDE_FROM_ABI auto
|
|
714
|
+
operator()(_LIBCPP_LIFETIMEBOUND const _MapValueT& __lhs, _LIBCPP_LIFETIMEBOUND const _TransparentKey& __rhs) const {
|
|
715
|
+
return __comp_(__lhs.first, __rhs);
|
|
716
|
+
}
|
|
717
|
+
};
|
|
718
|
+
# endif // _LIBCPP_STD_VER >= 14
|
|
719
|
+
|
|
720
|
+
template <class _Key, class _CP, class _Compare>
|
|
706
721
|
inline _LIBCPP_HIDE_FROM_ABI void
|
|
707
|
-
swap(__map_value_compare<_Key, _CP, _Compare
|
|
722
|
+
swap(__map_value_compare<_Key, _CP, _Compare>& __x, __map_value_compare<_Key, _CP, _Compare>& __y)
|
|
708
723
|
_NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
|
|
709
724
|
__x.swap(__y);
|
|
710
725
|
}
|
|
@@ -742,9 +757,9 @@ public:
|
|
|
742
757
|
|
|
743
758
|
_LIBCPP_HIDE_FROM_ABI void operator()(pointer __p) _NOEXCEPT {
|
|
744
759
|
if (__second_constructed)
|
|
745
|
-
__alloc_traits::destroy(__na_, std::addressof(__p->
|
|
760
|
+
__alloc_traits::destroy(__na_, std::addressof(__p->__get_value().second));
|
|
746
761
|
if (__first_constructed)
|
|
747
|
-
__alloc_traits::destroy(__na_, std::addressof(__p->
|
|
762
|
+
__alloc_traits::destroy(__na_, std::addressof(__p->__get_value().first));
|
|
748
763
|
if (__p)
|
|
749
764
|
__alloc_traits::deallocate(__na_, __p, 1);
|
|
750
765
|
}
|
|
@@ -804,7 +819,26 @@ public:
|
|
|
804
819
|
friend class multimap;
|
|
805
820
|
template <class>
|
|
806
821
|
friend class __map_const_iterator;
|
|
822
|
+
|
|
823
|
+
template <class, class...>
|
|
824
|
+
friend struct __specialized_algorithm;
|
|
825
|
+
};
|
|
826
|
+
|
|
827
|
+
# ifndef _LIBCPP_CXX03_LANG
|
|
828
|
+
template <class _Alg, class _TreeIterator>
|
|
829
|
+
struct __specialized_algorithm<_Alg, __iterator_pair<__map_iterator<_TreeIterator>, __map_iterator<_TreeIterator>>> {
|
|
830
|
+
using __base _LIBCPP_NODEBUG = __specialized_algorithm<_Alg, __iterator_pair<_TreeIterator, _TreeIterator>>;
|
|
831
|
+
|
|
832
|
+
static const bool __has_algorithm = __base::__has_algorithm;
|
|
833
|
+
|
|
834
|
+
using __iterator _LIBCPP_NODEBUG = __map_iterator<_TreeIterator>;
|
|
835
|
+
|
|
836
|
+
template <class... _Args>
|
|
837
|
+
_LIBCPP_HIDE_FROM_ABI static void operator()(__iterator __first, __iterator __last, _Args&&... __args) {
|
|
838
|
+
__base()(__first.__i_, __last.__i_, std::forward<_Args>(__args)...);
|
|
839
|
+
}
|
|
807
840
|
};
|
|
841
|
+
# endif
|
|
808
842
|
|
|
809
843
|
template <class _TreeIterator>
|
|
810
844
|
class __map_const_iterator {
|
|
@@ -859,9 +893,33 @@ public:
|
|
|
859
893
|
friend class multimap;
|
|
860
894
|
template <class, class, class>
|
|
861
895
|
friend class __tree_const_iterator;
|
|
896
|
+
|
|
897
|
+
template <class, class...>
|
|
898
|
+
friend struct __specialized_algorithm;
|
|
862
899
|
};
|
|
863
900
|
|
|
864
|
-
|
|
901
|
+
# ifndef _LIBCPP_CXX03_LANG
|
|
902
|
+
template <class _Alg, class _TreeIterator>
|
|
903
|
+
struct __specialized_algorithm<
|
|
904
|
+
_Alg,
|
|
905
|
+
__iterator_pair<__map_const_iterator<_TreeIterator>, __map_const_iterator<_TreeIterator>>> {
|
|
906
|
+
using __base _LIBCPP_NODEBUG = __specialized_algorithm<_Alg, __iterator_pair<_TreeIterator, _TreeIterator>>;
|
|
907
|
+
|
|
908
|
+
static const bool __has_algorithm = __base::__has_algorithm;
|
|
909
|
+
|
|
910
|
+
using __iterator _LIBCPP_NODEBUG = __map_const_iterator<_TreeIterator>;
|
|
911
|
+
|
|
912
|
+
template <class... _Args>
|
|
913
|
+
_LIBCPP_HIDE_FROM_ABI static void operator()(__iterator __first, __iterator __last, _Args&&... __args) {
|
|
914
|
+
__base()(__first.__i_, __last.__i_, std::forward<_Args>(__args)...);
|
|
915
|
+
}
|
|
916
|
+
};
|
|
917
|
+
# endif
|
|
918
|
+
|
|
919
|
+
template <class _Key, class _Tp, class _Compare = less<_Key>, class _Allocator = allocator<pair<const _Key, _Tp> > >
|
|
920
|
+
class multimap;
|
|
921
|
+
|
|
922
|
+
template <class _Key, class _Tp, class _Compare = less<_Key>, class _Allocator = allocator<pair<const _Key, _Tp> > >
|
|
865
923
|
class map {
|
|
866
924
|
public:
|
|
867
925
|
// types:
|
|
@@ -970,17 +1028,17 @@ public:
|
|
|
970
1028
|
: map(from_range, std::forward<_Range>(__range), key_compare(), __a) {}
|
|
971
1029
|
# endif
|
|
972
1030
|
|
|
973
|
-
_LIBCPP_HIDE_FROM_ABI map(const map& __m)
|
|
1031
|
+
_LIBCPP_HIDE_FROM_ABI map(const map& __m) = default;
|
|
974
1032
|
|
|
975
1033
|
_LIBCPP_HIDE_FROM_ABI map& operator=(const map& __m) = default;
|
|
976
1034
|
|
|
977
1035
|
# ifndef _LIBCPP_CXX03_LANG
|
|
978
1036
|
|
|
979
|
-
_LIBCPP_HIDE_FROM_ABI map(map&& __m)
|
|
1037
|
+
_LIBCPP_HIDE_FROM_ABI map(map&& __m) = default;
|
|
980
1038
|
|
|
981
|
-
_LIBCPP_HIDE_FROM_ABI map(map&& __m, const allocator_type& __a)
|
|
1039
|
+
_LIBCPP_HIDE_FROM_ABI map(map&& __m, const allocator_type& __a) : __tree_(std::move(__m.__tree_), __a) {}
|
|
982
1040
|
|
|
983
|
-
_LIBCPP_HIDE_FROM_ABI map& operator=(map&& __m)
|
|
1041
|
+
_LIBCPP_HIDE_FROM_ABI map& operator=(map&& __m) = default;
|
|
984
1042
|
|
|
985
1043
|
_LIBCPP_HIDE_FROM_ABI map(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
|
|
986
1044
|
: __tree_(__vc(__comp)) {
|
|
@@ -998,7 +1056,8 @@ public:
|
|
|
998
1056
|
# endif
|
|
999
1057
|
|
|
1000
1058
|
_LIBCPP_HIDE_FROM_ABI map& operator=(initializer_list<value_type> __il) {
|
|
1001
|
-
|
|
1059
|
+
clear();
|
|
1060
|
+
insert(__il.begin(), __il.end());
|
|
1002
1061
|
return *this;
|
|
1003
1062
|
}
|
|
1004
1063
|
|
|
@@ -1006,43 +1065,66 @@ public:
|
|
|
1006
1065
|
|
|
1007
1066
|
_LIBCPP_HIDE_FROM_ABI explicit map(const allocator_type& __a) : __tree_(typename __base::allocator_type(__a)) {}
|
|
1008
1067
|
|
|
1009
|
-
_LIBCPP_HIDE_FROM_ABI map(const map& __m, const allocator_type&
|
|
1010
|
-
: __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a)) {
|
|
1011
|
-
insert(__m.begin(), __m.end());
|
|
1012
|
-
}
|
|
1068
|
+
_LIBCPP_HIDE_FROM_ABI map(const map& __m, const allocator_type& __alloc) : __tree_(__m.__tree_, __alloc) {}
|
|
1013
1069
|
|
|
1014
1070
|
_LIBCPP_HIDE_FROM_ABI ~map() { static_assert(sizeof(std::__diagnose_non_const_comparator<_Key, _Compare>()), ""); }
|
|
1015
1071
|
|
|
1016
|
-
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1017
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1018
|
-
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1019
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1072
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1073
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1074
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1075
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1020
1076
|
|
|
1021
|
-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1022
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1023
|
-
|
|
1024
|
-
|
|
1077
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1078
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1079
|
+
return const_reverse_iterator(end());
|
|
1080
|
+
}
|
|
1081
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rend() _NOEXCEPT { return reverse_iterator(begin()); }
|
|
1082
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const _NOEXCEPT {
|
|
1083
|
+
return const_reverse_iterator(begin());
|
|
1084
|
+
}
|
|
1025
1085
|
|
|
1026
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1027
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1028
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1029
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1086
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1087
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1088
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1089
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1030
1090
|
|
|
1031
1091
|
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __tree_.size() == 0; }
|
|
1032
|
-
_LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1033
|
-
_LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1092
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1093
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1034
1094
|
|
|
1035
1095
|
_LIBCPP_HIDE_FROM_ABI mapped_type& operator[](const key_type& __k);
|
|
1036
1096
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1037
1097
|
_LIBCPP_HIDE_FROM_ABI mapped_type& operator[](key_type&& __k);
|
|
1038
1098
|
# endif
|
|
1039
1099
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1100
|
+
template <class _Arg,
|
|
1101
|
+
__enable_if_t<__is_transparently_comparable_v<_Compare, key_type, __remove_cvref_t<_Arg> >, int> = 0>
|
|
1102
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI mapped_type& at(_Arg&& __arg) {
|
|
1103
|
+
auto [_, __child] = __tree_.__find_equal(__arg);
|
|
1104
|
+
if (__child == nullptr)
|
|
1105
|
+
std::__throw_out_of_range("map::at: key not found");
|
|
1106
|
+
return static_cast<__node_pointer>(__child)->__get_value().second;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
template <class _Arg,
|
|
1110
|
+
__enable_if_t<__is_transparently_comparable_v<_Compare, key_type, __remove_cvref_t<_Arg> >, int> = 0>
|
|
1111
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const mapped_type& at(_Arg&& __arg) const {
|
|
1112
|
+
auto [_, __child] = __tree_.__find_equal(__arg);
|
|
1113
|
+
if (__child == nullptr)
|
|
1114
|
+
std::__throw_out_of_range("map::at: key not found");
|
|
1115
|
+
return static_cast<__node_pointer>(__child)->__get_value().second;
|
|
1116
|
+
}
|
|
1042
1117
|
|
|
1043
|
-
_LIBCPP_HIDE_FROM_ABI
|
|
1044
|
-
_LIBCPP_HIDE_FROM_ABI
|
|
1045
|
-
|
|
1118
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI mapped_type& at(const key_type& __k);
|
|
1119
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const mapped_type& at(const key_type& __k) const;
|
|
1120
|
+
|
|
1121
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
|
|
1122
|
+
return allocator_type(__tree_.__alloc());
|
|
1123
|
+
}
|
|
1124
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp().key_comp(); }
|
|
1125
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI value_compare value_comp() const {
|
|
1126
|
+
return value_compare(__tree_.value_comp().key_comp());
|
|
1127
|
+
}
|
|
1046
1128
|
|
|
1047
1129
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1048
1130
|
template <class... _Args>
|
|
@@ -1052,7 +1134,7 @@ public:
|
|
|
1052
1134
|
|
|
1053
1135
|
template <class... _Args>
|
|
1054
1136
|
_LIBCPP_HIDE_FROM_ABI iterator emplace_hint(const_iterator __p, _Args&&... __args) {
|
|
1055
|
-
return __tree_.__emplace_hint_unique(__p.__i_, std::forward<_Args>(__args)...);
|
|
1137
|
+
return __tree_.__emplace_hint_unique(__p.__i_, std::forward<_Args>(__args)...).first;
|
|
1056
1138
|
}
|
|
1057
1139
|
|
|
1058
1140
|
template <class _Pp, __enable_if_t<is_constructible<value_type, _Pp>::value, int> = 0>
|
|
@@ -1062,7 +1144,7 @@ public:
|
|
|
1062
1144
|
|
|
1063
1145
|
template <class _Pp, __enable_if_t<is_constructible<value_type, _Pp>::value, int> = 0>
|
|
1064
1146
|
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __pos, _Pp&& __p) {
|
|
1065
|
-
return __tree_.__emplace_hint_unique(__pos.__i_, std::forward<_Pp>(__p));
|
|
1147
|
+
return __tree_.__emplace_hint_unique(__pos.__i_, std::forward<_Pp>(__p)).first;
|
|
1066
1148
|
}
|
|
1067
1149
|
|
|
1068
1150
|
# endif // _LIBCPP_CXX03_LANG
|
|
@@ -1070,7 +1152,7 @@ public:
|
|
|
1070
1152
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(const value_type& __v) { return __tree_.__emplace_unique(__v); }
|
|
1071
1153
|
|
|
1072
1154
|
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __p, const value_type& __v) {
|
|
1073
|
-
return __tree_.__emplace_hint_unique(__p.__i_, __v);
|
|
1155
|
+
return __tree_.__emplace_hint_unique(__p.__i_, __v).first;
|
|
1074
1156
|
}
|
|
1075
1157
|
|
|
1076
1158
|
# ifndef _LIBCPP_CXX03_LANG
|
|
@@ -1079,25 +1161,21 @@ public:
|
|
|
1079
1161
|
}
|
|
1080
1162
|
|
|
1081
1163
|
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __p, value_type&& __v) {
|
|
1082
|
-
return __tree_.__emplace_hint_unique(__p.__i_, std::move(__v));
|
|
1164
|
+
return __tree_.__emplace_hint_unique(__p.__i_, std::move(__v)).first;
|
|
1083
1165
|
}
|
|
1084
1166
|
|
|
1085
1167
|
_LIBCPP_HIDE_FROM_ABI void insert(initializer_list<value_type> __il) { insert(__il.begin(), __il.end()); }
|
|
1086
1168
|
# endif
|
|
1087
1169
|
|
|
1088
1170
|
template <class _InputIterator>
|
|
1089
|
-
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator
|
|
1090
|
-
|
|
1091
|
-
insert(__e.__i_, *__f);
|
|
1171
|
+
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator __first, _InputIterator __last) {
|
|
1172
|
+
__tree_.__insert_range_unique(__first, __last);
|
|
1092
1173
|
}
|
|
1093
1174
|
|
|
1094
1175
|
# if _LIBCPP_STD_VER >= 23
|
|
1095
1176
|
template <_ContainerCompatibleRange<value_type> _Range>
|
|
1096
1177
|
_LIBCPP_HIDE_FROM_ABI void insert_range(_Range&& __range) {
|
|
1097
|
-
|
|
1098
|
-
for (auto&& __element : __range) {
|
|
1099
|
-
insert(__end.__i_, std::forward<decltype(__element)>(__element));
|
|
1100
|
-
}
|
|
1178
|
+
__tree_.__insert_range_unique(ranges::begin(__range), ranges::end(__range));
|
|
1101
1179
|
}
|
|
1102
1180
|
# endif
|
|
1103
1181
|
|
|
@@ -1105,17 +1183,13 @@ public:
|
|
|
1105
1183
|
|
|
1106
1184
|
template <class... _Args>
|
|
1107
1185
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> try_emplace(const key_type& __k, _Args&&... __args) {
|
|
1108
|
-
return __tree_.
|
|
1109
|
-
__k,
|
|
1110
|
-
std::piecewise_construct,
|
|
1111
|
-
std::forward_as_tuple(__k),
|
|
1112
|
-
std::forward_as_tuple(std::forward<_Args>(__args)...));
|
|
1186
|
+
return __tree_.__emplace_unique(
|
|
1187
|
+
std::piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple(std::forward<_Args>(__args)...));
|
|
1113
1188
|
}
|
|
1114
1189
|
|
|
1115
1190
|
template <class... _Args>
|
|
1116
1191
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> try_emplace(key_type&& __k, _Args&&... __args) {
|
|
1117
|
-
return __tree_.
|
|
1118
|
-
__k,
|
|
1192
|
+
return __tree_.__emplace_unique(
|
|
1119
1193
|
std::piecewise_construct,
|
|
1120
1194
|
std::forward_as_tuple(std::move(__k)),
|
|
1121
1195
|
std::forward_as_tuple(std::forward<_Args>(__args)...));
|
|
@@ -1124,9 +1198,8 @@ public:
|
|
|
1124
1198
|
template <class... _Args>
|
|
1125
1199
|
_LIBCPP_HIDE_FROM_ABI iterator try_emplace(const_iterator __h, const key_type& __k, _Args&&... __args) {
|
|
1126
1200
|
return __tree_
|
|
1127
|
-
.
|
|
1201
|
+
.__emplace_hint_unique(
|
|
1128
1202
|
__h.__i_,
|
|
1129
|
-
__k,
|
|
1130
1203
|
std::piecewise_construct,
|
|
1131
1204
|
std::forward_as_tuple(__k),
|
|
1132
1205
|
std::forward_as_tuple(std::forward<_Args>(__args)...))
|
|
@@ -1136,9 +1209,8 @@ public:
|
|
|
1136
1209
|
template <class... _Args>
|
|
1137
1210
|
_LIBCPP_HIDE_FROM_ABI iterator try_emplace(const_iterator __h, key_type&& __k, _Args&&... __args) {
|
|
1138
1211
|
return __tree_
|
|
1139
|
-
.
|
|
1212
|
+
.__emplace_hint_unique(
|
|
1140
1213
|
__h.__i_,
|
|
1141
|
-
__k,
|
|
1142
1214
|
std::piecewise_construct,
|
|
1143
1215
|
std::forward_as_tuple(std::move(__k)),
|
|
1144
1216
|
std::forward_as_tuple(std::forward<_Args>(__args)...))
|
|
@@ -1147,27 +1219,25 @@ public:
|
|
|
1147
1219
|
|
|
1148
1220
|
template <class _Vp>
|
|
1149
1221
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(const key_type& __k, _Vp&& __v) {
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
return std::make_pair(emplace_hint(__p, __k, std::forward<_Vp>(__v)), true);
|
|
1222
|
+
auto __result = __tree_.__emplace_unique(__k, std::forward<_Vp>(__v));
|
|
1223
|
+
auto& [__iter, __inserted] = __result;
|
|
1224
|
+
if (!__inserted)
|
|
1225
|
+
__iter->second = std::forward<_Vp>(__v);
|
|
1226
|
+
return __result;
|
|
1156
1227
|
}
|
|
1157
1228
|
|
|
1158
1229
|
template <class _Vp>
|
|
1159
1230
|
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(key_type&& __k, _Vp&& __v) {
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
return std::make_pair(emplace_hint(__p, std::move(__k), std::forward<_Vp>(__v)), true);
|
|
1231
|
+
auto __result = __tree_.__emplace_unique(std::move(__k), std::forward<_Vp>(__v));
|
|
1232
|
+
auto& [__iter, __inserted] = __result;
|
|
1233
|
+
if (!__inserted)
|
|
1234
|
+
__iter->second = std::forward<_Vp>(__v);
|
|
1235
|
+
return __result;
|
|
1166
1236
|
}
|
|
1167
1237
|
|
|
1168
1238
|
template <class _Vp>
|
|
1169
1239
|
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __h, const key_type& __k, _Vp&& __v) {
|
|
1170
|
-
auto [__r, __inserted] = __tree_.
|
|
1240
|
+
auto [__r, __inserted] = __tree_.__emplace_hint_unique(__h.__i_, __k, std::forward<_Vp>(__v));
|
|
1171
1241
|
|
|
1172
1242
|
if (!__inserted)
|
|
1173
1243
|
__r->second = std::forward<_Vp>(__v);
|
|
@@ -1177,8 +1247,7 @@ public:
|
|
|
1177
1247
|
|
|
1178
1248
|
template <class _Vp>
|
|
1179
1249
|
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __h, key_type&& __k, _Vp&& __v) {
|
|
1180
|
-
auto [__r, __inserted] =
|
|
1181
|
-
__tree_.__emplace_hint_unique_key_args(__h.__i_, __k, std::move(__k), std::forward<_Vp>(__v));
|
|
1250
|
+
auto [__r, __inserted] = __tree_.__emplace_hint_unique(__h.__i_, std::move(__k), std::forward<_Vp>(__v));
|
|
1182
1251
|
|
|
1183
1252
|
if (!__inserted)
|
|
1184
1253
|
__r->second = std::forward<_Vp>(__v);
|
|
@@ -1207,10 +1276,10 @@ public:
|
|
|
1207
1276
|
"node_type with incompatible allocator passed to map::insert()");
|
|
1208
1277
|
return __tree_.template __node_handle_insert_unique<node_type>(__hint.__i_, std::move(__nh));
|
|
1209
1278
|
}
|
|
1210
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1279
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1211
1280
|
return __tree_.template __node_handle_extract<node_type>(__key);
|
|
1212
1281
|
}
|
|
1213
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1282
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1214
1283
|
return __tree_.template __node_handle_extract<node_type>(__it.__i_);
|
|
1215
1284
|
}
|
|
1216
1285
|
template <class _Compare2>
|
|
@@ -1241,75 +1310,105 @@ public:
|
|
|
1241
1310
|
|
|
1242
1311
|
_LIBCPP_HIDE_FROM_ABI void swap(map& __m) _NOEXCEPT_(__is_nothrow_swappable_v<__base>) { __tree_.swap(__m.__tree_); }
|
|
1243
1312
|
|
|
1244
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1245
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1313
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1314
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1246
1315
|
# if _LIBCPP_STD_VER >= 14
|
|
1247
|
-
template <typename _K2,
|
|
1248
|
-
|
|
1316
|
+
template <typename _K2,
|
|
1317
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1318
|
+
int> = 0>
|
|
1319
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
1249
1320
|
return __tree_.find(__k);
|
|
1250
1321
|
}
|
|
1251
|
-
template <typename _K2,
|
|
1252
|
-
|
|
1322
|
+
template <typename _K2,
|
|
1323
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1324
|
+
int> = 0>
|
|
1325
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
1253
1326
|
return __tree_.find(__k);
|
|
1254
1327
|
}
|
|
1255
1328
|
# endif
|
|
1256
1329
|
|
|
1257
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1330
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1331
|
+
return __tree_.__count_unique(__k);
|
|
1332
|
+
}
|
|
1258
1333
|
# if _LIBCPP_STD_VER >= 14
|
|
1259
1334
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1260
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1335
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1261
1336
|
return __tree_.__count_multi(__k);
|
|
1262
1337
|
}
|
|
1263
1338
|
# endif
|
|
1264
1339
|
|
|
1265
1340
|
# if _LIBCPP_STD_VER >= 20
|
|
1266
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1267
|
-
template <typename _K2,
|
|
1268
|
-
|
|
1341
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1342
|
+
template <typename _K2,
|
|
1343
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1344
|
+
int> = 0>
|
|
1345
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
1269
1346
|
return find(__k) != end();
|
|
1270
1347
|
}
|
|
1271
1348
|
# endif // _LIBCPP_STD_VER >= 20
|
|
1272
1349
|
|
|
1273
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1274
|
-
|
|
1350
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1351
|
+
return __tree_.__lower_bound_unique(__k);
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
|
|
1355
|
+
return __tree_.__lower_bound_unique(__k);
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
// The transparent versions of the lookup functions use the _multi version, since a non-element key is allowed to
|
|
1359
|
+
// match multiple elements.
|
|
1275
1360
|
# if _LIBCPP_STD_VER >= 14
|
|
1276
|
-
template <typename _K2,
|
|
1277
|
-
|
|
1278
|
-
|
|
1361
|
+
template <typename _K2,
|
|
1362
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1363
|
+
int> = 0>
|
|
1364
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
1365
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1279
1366
|
}
|
|
1280
1367
|
|
|
1281
|
-
template <typename _K2,
|
|
1282
|
-
|
|
1283
|
-
|
|
1368
|
+
template <typename _K2,
|
|
1369
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1370
|
+
int> = 0>
|
|
1371
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
1372
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1284
1373
|
}
|
|
1285
1374
|
# endif
|
|
1286
1375
|
|
|
1287
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1288
|
-
|
|
1289
|
-
# if _LIBCPP_STD_VER >= 14
|
|
1290
|
-
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1291
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1292
|
-
return __tree_.upper_bound(__k);
|
|
1376
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1377
|
+
return __tree_.__upper_bound_unique(__k);
|
|
1293
1378
|
}
|
|
1294
|
-
|
|
1295
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const
|
|
1296
|
-
return __tree_.
|
|
1379
|
+
|
|
1380
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
|
|
1381
|
+
return __tree_.__upper_bound_unique(__k);
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1384
|
+
# if _LIBCPP_STD_VER >= 14
|
|
1385
|
+
template <typename _K2,
|
|
1386
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1387
|
+
int> = 0>
|
|
1388
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1389
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1390
|
+
}
|
|
1391
|
+
template <typename _K2,
|
|
1392
|
+
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
|
|
1393
|
+
int> = 0>
|
|
1394
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
1395
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1297
1396
|
}
|
|
1298
1397
|
# endif
|
|
1299
1398
|
|
|
1300
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1399
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1301
1400
|
return __tree_.__equal_range_unique(__k);
|
|
1302
1401
|
}
|
|
1303
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1402
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1304
1403
|
return __tree_.__equal_range_unique(__k);
|
|
1305
1404
|
}
|
|
1306
1405
|
# if _LIBCPP_STD_VER >= 14
|
|
1307
1406
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1308
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1407
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1309
1408
|
return __tree_.__equal_range_multi(__k);
|
|
1310
1409
|
}
|
|
1311
1410
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1312
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1411
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1313
1412
|
return __tree_.__equal_range_multi(__k);
|
|
1314
1413
|
}
|
|
1315
1414
|
# endif
|
|
@@ -1319,7 +1418,6 @@ private:
|
|
|
1319
1418
|
typedef typename __base::__node_allocator __node_allocator;
|
|
1320
1419
|
typedef typename __base::__node_pointer __node_pointer;
|
|
1321
1420
|
typedef typename __base::__node_base_pointer __node_base_pointer;
|
|
1322
|
-
typedef typename __base::__parent_pointer __parent_pointer;
|
|
1323
1421
|
|
|
1324
1422
|
typedef __map_node_destructor<__node_allocator> _Dp;
|
|
1325
1423
|
typedef unique_ptr<__node, _Dp> __node_holder;
|
|
@@ -1327,6 +1425,8 @@ private:
|
|
|
1327
1425
|
# ifdef _LIBCPP_CXX03_LANG
|
|
1328
1426
|
_LIBCPP_HIDE_FROM_ABI __node_holder __construct_node_with_key(const key_type& __k);
|
|
1329
1427
|
# endif
|
|
1428
|
+
|
|
1429
|
+
friend struct __specialized_algorithm<_Algorithm::__for_each, __single_range<map> >;
|
|
1330
1430
|
};
|
|
1331
1431
|
|
|
1332
1432
|
# if _LIBCPP_STD_VER >= 17
|
|
@@ -1334,8 +1434,8 @@ template <class _InputIterator,
|
|
|
1334
1434
|
class _Compare = less<__iter_key_type<_InputIterator>>,
|
|
1335
1435
|
class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
|
|
1336
1436
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1337
|
-
class = enable_if_t<!
|
|
1338
|
-
class = enable_if_t<
|
|
1437
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
1438
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1339
1439
|
map(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1340
1440
|
-> map<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare, _Allocator>;
|
|
1341
1441
|
|
|
@@ -1343,8 +1443,8 @@ map(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocat
|
|
|
1343
1443
|
template <ranges::input_range _Range,
|
|
1344
1444
|
class _Compare = less<__range_key_type<_Range>>,
|
|
1345
1445
|
class _Allocator = allocator<__range_to_alloc_type<_Range>>,
|
|
1346
|
-
class = enable_if_t<!
|
|
1347
|
-
class = enable_if_t<
|
|
1446
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
1447
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1348
1448
|
map(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1349
1449
|
-> map<__range_key_type<_Range>, __range_mapped_type<_Range>, _Compare, _Allocator>;
|
|
1350
1450
|
# endif
|
|
@@ -1353,16 +1453,15 @@ template <class _Key,
|
|
|
1353
1453
|
class _Tp,
|
|
1354
1454
|
class _Compare = less<remove_const_t<_Key>>,
|
|
1355
1455
|
class _Allocator = allocator<pair<const _Key, _Tp>>,
|
|
1356
|
-
class = enable_if_t<!
|
|
1357
|
-
class = enable_if_t<
|
|
1358
|
-
map(initializer_list<pair<_Key, _Tp>>,
|
|
1359
|
-
|
|
1360
|
-
_Allocator = _Allocator()) -> map<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;
|
|
1456
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
1457
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1458
|
+
map(initializer_list<pair<_Key, _Tp>>, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1459
|
+
-> map<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;
|
|
1361
1460
|
|
|
1362
1461
|
template <class _InputIterator,
|
|
1363
1462
|
class _Allocator,
|
|
1364
1463
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1365
|
-
class = enable_if_t<
|
|
1464
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1366
1465
|
map(_InputIterator, _InputIterator, _Allocator)
|
|
1367
1466
|
-> map<__iter_key_type<_InputIterator>,
|
|
1368
1467
|
__iter_mapped_type<_InputIterator>,
|
|
@@ -1370,44 +1469,44 @@ map(_InputIterator, _InputIterator, _Allocator)
|
|
|
1370
1469
|
_Allocator>;
|
|
1371
1470
|
|
|
1372
1471
|
# if _LIBCPP_STD_VER >= 23
|
|
1373
|
-
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<
|
|
1472
|
+
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1374
1473
|
map(from_range_t, _Range&&, _Allocator)
|
|
1375
1474
|
-> map<__range_key_type<_Range>, __range_mapped_type<_Range>, less<__range_key_type<_Range>>, _Allocator>;
|
|
1376
1475
|
# endif
|
|
1377
1476
|
|
|
1378
|
-
template <class _Key, class _Tp, class _Allocator, class = enable_if_t<
|
|
1379
|
-
map(initializer_list<pair<_Key, _Tp>>,
|
|
1380
|
-
|
|
1477
|
+
template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1478
|
+
map(initializer_list<pair<_Key, _Tp>>, _Allocator)
|
|
1479
|
+
-> map<remove_const_t<_Key>, _Tp, less<remove_const_t<_Key>>, _Allocator>;
|
|
1381
1480
|
# endif
|
|
1382
1481
|
|
|
1383
|
-
#
|
|
1482
|
+
# if _LIBCPP_STD_VER >= 14
|
|
1384
1483
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1385
|
-
map<_Key, _Tp, _Compare, _Allocator
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1484
|
+
struct __specialized_algorithm<_Algorithm::__for_each, __single_range<map<_Key, _Tp, _Compare, _Allocator>>> {
|
|
1485
|
+
using __map _LIBCPP_NODEBUG = map<_Key, _Tp, _Compare, _Allocator>;
|
|
1486
|
+
|
|
1487
|
+
static const bool __has_algorithm = true;
|
|
1488
|
+
|
|
1489
|
+
template <class _Map, class _Func, class _Proj>
|
|
1490
|
+
_LIBCPP_HIDE_FROM_ABI static auto operator()(_Map&& __map, _Func __func, _Proj __proj) {
|
|
1491
|
+
auto [_, __func2] = __specialized_algorithm<_Algorithm::__for_each, __single_range<typename __map::__base>>()(
|
|
1492
|
+
__map.__tree_, std::move(__func), std::move(__proj));
|
|
1493
|
+
return std::make_pair(__map.end(), std::move(__func2));
|
|
1392
1494
|
}
|
|
1393
|
-
}
|
|
1495
|
+
};
|
|
1496
|
+
# endif
|
|
1394
1497
|
|
|
1498
|
+
# ifndef _LIBCPP_CXX03_LANG
|
|
1395
1499
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1396
1500
|
_Tp& map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k) {
|
|
1397
|
-
return __tree_
|
|
1398
|
-
.__emplace_unique_key_args(__k, std::piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple())
|
|
1501
|
+
return __tree_.__emplace_unique(std::piecewise_construct, std::forward_as_tuple(__k), std::forward_as_tuple())
|
|
1399
1502
|
.first->second;
|
|
1400
1503
|
}
|
|
1401
1504
|
|
|
1402
1505
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1403
1506
|
_Tp& map<_Key, _Tp, _Compare, _Allocator>::operator[](key_type&& __k) {
|
|
1404
|
-
// TODO investigate this clang-tidy warning.
|
|
1405
|
-
// NOLINTBEGIN(bugprone-use-after-move)
|
|
1406
1507
|
return __tree_
|
|
1407
|
-
.
|
|
1408
|
-
__k, std::piecewise_construct, std::forward_as_tuple(std::move(__k)), std::forward_as_tuple())
|
|
1508
|
+
.__emplace_unique(std::piecewise_construct, std::forward_as_tuple(std::move(__k)), std::forward_as_tuple())
|
|
1409
1509
|
.first->second;
|
|
1410
|
-
// NOLINTEND(bugprone-use-after-move)
|
|
1411
1510
|
}
|
|
1412
1511
|
|
|
1413
1512
|
# else // _LIBCPP_CXX03_LANG
|
|
@@ -1417,44 +1516,41 @@ typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder
|
|
|
1417
1516
|
map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(const key_type& __k) {
|
|
1418
1517
|
__node_allocator& __na = __tree_.__node_alloc();
|
|
1419
1518
|
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
|
|
1420
|
-
__node_traits::construct(__na, std::addressof(__h->
|
|
1519
|
+
__node_traits::construct(__na, std::addressof(__h->__get_value().first), __k);
|
|
1421
1520
|
__h.get_deleter().__first_constructed = true;
|
|
1422
|
-
__node_traits::construct(__na, std::addressof(__h->
|
|
1521
|
+
__node_traits::construct(__na, std::addressof(__h->__get_value().second));
|
|
1423
1522
|
__h.get_deleter().__second_constructed = true;
|
|
1424
1523
|
return __h;
|
|
1425
1524
|
}
|
|
1426
1525
|
|
|
1427
1526
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1428
1527
|
_Tp& map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k) {
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
__node_pointer __r = static_cast<__node_pointer>(__child);
|
|
1528
|
+
auto [__parent, __child] = __tree_.__find_equal(__k);
|
|
1529
|
+
__node_pointer __r = static_cast<__node_pointer>(__child);
|
|
1432
1530
|
if (__child == nullptr) {
|
|
1433
1531
|
__node_holder __h = __construct_node_with_key(__k);
|
|
1434
1532
|
__tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
|
|
1435
1533
|
__r = __h.release();
|
|
1436
1534
|
}
|
|
1437
|
-
return __r->
|
|
1535
|
+
return __r->__get_value().second;
|
|
1438
1536
|
}
|
|
1439
1537
|
|
|
1440
1538
|
# endif // _LIBCPP_CXX03_LANG
|
|
1441
1539
|
|
|
1442
1540
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1443
1541
|
_Tp& map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) {
|
|
1444
|
-
|
|
1445
|
-
__node_base_pointer& __child = __tree_.__find_equal(__parent, __k);
|
|
1542
|
+
auto [_, __child] = __tree_.__find_equal(__k);
|
|
1446
1543
|
if (__child == nullptr)
|
|
1447
1544
|
std::__throw_out_of_range("map::at: key not found");
|
|
1448
|
-
return static_cast<__node_pointer>(__child)->
|
|
1545
|
+
return static_cast<__node_pointer>(__child)->__get_value().second;
|
|
1449
1546
|
}
|
|
1450
1547
|
|
|
1451
1548
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1452
1549
|
const _Tp& map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) const {
|
|
1453
|
-
|
|
1454
|
-
__node_base_pointer __child = __tree_.__find_equal(__parent, __k);
|
|
1550
|
+
auto [_, __child] = __tree_.__find_equal(__k);
|
|
1455
1551
|
if (__child == nullptr)
|
|
1456
1552
|
std::__throw_out_of_range("map::at: key not found");
|
|
1457
|
-
return static_cast<__node_pointer>(__child)->
|
|
1553
|
+
return static_cast<__node_pointer>(__child)->__get_value().second;
|
|
1458
1554
|
}
|
|
1459
1555
|
|
|
1460
1556
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
@@ -1637,22 +1733,17 @@ public:
|
|
|
1637
1733
|
: multimap(from_range, std::forward<_Range>(__range), key_compare(), __a) {}
|
|
1638
1734
|
# endif
|
|
1639
1735
|
|
|
1640
|
-
_LIBCPP_HIDE_FROM_ABI multimap(const multimap& __m)
|
|
1641
|
-
: __tree_(__m.__tree_.value_comp(),
|
|
1642
|
-
__alloc_traits::select_on_container_copy_construction(__m.__tree_.__alloc())) {
|
|
1643
|
-
insert(__m.begin(), __m.end());
|
|
1644
|
-
}
|
|
1736
|
+
_LIBCPP_HIDE_FROM_ABI multimap(const multimap& __m) = default;
|
|
1645
1737
|
|
|
1646
1738
|
_LIBCPP_HIDE_FROM_ABI multimap& operator=(const multimap& __m) = default;
|
|
1647
1739
|
|
|
1648
1740
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1649
1741
|
|
|
1650
|
-
_LIBCPP_HIDE_FROM_ABI multimap(multimap&& __m)
|
|
1742
|
+
_LIBCPP_HIDE_FROM_ABI multimap(multimap&& __m) = default;
|
|
1651
1743
|
|
|
1652
|
-
_LIBCPP_HIDE_FROM_ABI multimap(multimap&& __m, const allocator_type& __a)
|
|
1744
|
+
_LIBCPP_HIDE_FROM_ABI multimap(multimap&& __m, const allocator_type& __a) : __tree_(std::move(__m.__tree_), __a) {}
|
|
1653
1745
|
|
|
1654
|
-
_LIBCPP_HIDE_FROM_ABI multimap&
|
|
1655
|
-
operator=(multimap&& __m) noexcept(is_nothrow_move_assignable<__base>::value) = default;
|
|
1746
|
+
_LIBCPP_HIDE_FROM_ABI multimap& operator=(multimap&& __m) = default;
|
|
1656
1747
|
|
|
1657
1748
|
_LIBCPP_HIDE_FROM_ABI multimap(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
|
|
1658
1749
|
: __tree_(__vc(__comp)) {
|
|
@@ -1671,7 +1762,8 @@ public:
|
|
|
1671
1762
|
# endif
|
|
1672
1763
|
|
|
1673
1764
|
_LIBCPP_HIDE_FROM_ABI multimap& operator=(initializer_list<value_type> __il) {
|
|
1674
|
-
|
|
1765
|
+
clear();
|
|
1766
|
+
insert(__il.begin(), __il.end());
|
|
1675
1767
|
return *this;
|
|
1676
1768
|
}
|
|
1677
1769
|
|
|
@@ -1679,37 +1771,42 @@ public:
|
|
|
1679
1771
|
|
|
1680
1772
|
_LIBCPP_HIDE_FROM_ABI explicit multimap(const allocator_type& __a) : __tree_(typename __base::allocator_type(__a)) {}
|
|
1681
1773
|
|
|
1682
|
-
_LIBCPP_HIDE_FROM_ABI multimap(const multimap& __m, const allocator_type& __a)
|
|
1683
|
-
: __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a)) {
|
|
1684
|
-
insert(__m.begin(), __m.end());
|
|
1685
|
-
}
|
|
1774
|
+
_LIBCPP_HIDE_FROM_ABI multimap(const multimap& __m, const allocator_type& __a) : __tree_(__m.__tree_, __a) {}
|
|
1686
1775
|
|
|
1687
1776
|
_LIBCPP_HIDE_FROM_ABI ~multimap() {
|
|
1688
1777
|
static_assert(sizeof(std::__diagnose_non_const_comparator<_Key, _Compare>()), "");
|
|
1689
1778
|
}
|
|
1690
1779
|
|
|
1691
|
-
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1692
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1693
|
-
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1694
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1780
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return __tree_.begin(); }
|
|
1781
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT { return __tree_.begin(); }
|
|
1782
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return __tree_.end(); }
|
|
1783
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return __tree_.end(); }
|
|
1695
1784
|
|
|
1696
|
-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1697
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1698
|
-
|
|
1699
|
-
|
|
1785
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() _NOEXCEPT { return reverse_iterator(end()); }
|
|
1786
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const _NOEXCEPT {
|
|
1787
|
+
return const_reverse_iterator(end());
|
|
1788
|
+
}
|
|
1789
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reverse_iterator rend() _NOEXCEPT { return reverse_iterator(begin()); }
|
|
1790
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const _NOEXCEPT {
|
|
1791
|
+
return const_reverse_iterator(begin());
|
|
1792
|
+
}
|
|
1700
1793
|
|
|
1701
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1702
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1703
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1704
|
-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1794
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT { return begin(); }
|
|
1795
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return end(); }
|
|
1796
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const _NOEXCEPT { return rbegin(); }
|
|
1797
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const _NOEXCEPT { return rend(); }
|
|
1705
1798
|
|
|
1706
1799
|
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __tree_.size() == 0; }
|
|
1707
|
-
_LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1708
|
-
_LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1800
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __tree_.size(); }
|
|
1801
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT { return __tree_.max_size(); }
|
|
1709
1802
|
|
|
1710
|
-
_LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
|
|
1711
|
-
|
|
1712
|
-
|
|
1803
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
|
|
1804
|
+
return allocator_type(__tree_.__alloc());
|
|
1805
|
+
}
|
|
1806
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI key_compare key_comp() const { return __tree_.value_comp().key_comp(); }
|
|
1807
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI value_compare value_comp() const {
|
|
1808
|
+
return value_compare(__tree_.value_comp().key_comp());
|
|
1809
|
+
}
|
|
1713
1810
|
|
|
1714
1811
|
# ifndef _LIBCPP_CXX03_LANG
|
|
1715
1812
|
|
|
@@ -1751,17 +1848,13 @@ public:
|
|
|
1751
1848
|
|
|
1752
1849
|
template <class _InputIterator>
|
|
1753
1850
|
_LIBCPP_HIDE_FROM_ABI void insert(_InputIterator __f, _InputIterator __l) {
|
|
1754
|
-
|
|
1755
|
-
__tree_.__emplace_hint_multi(__e.__i_, *__f);
|
|
1851
|
+
__tree_.__insert_range_multi(__f, __l);
|
|
1756
1852
|
}
|
|
1757
1853
|
|
|
1758
1854
|
# if _LIBCPP_STD_VER >= 23
|
|
1759
1855
|
template <_ContainerCompatibleRange<value_type> _Range>
|
|
1760
1856
|
_LIBCPP_HIDE_FROM_ABI void insert_range(_Range&& __range) {
|
|
1761
|
-
|
|
1762
|
-
for (auto&& __element : __range) {
|
|
1763
|
-
__tree_.__emplace_hint_multi(__end.__i_, std::forward<decltype(__element)>(__element));
|
|
1764
|
-
}
|
|
1857
|
+
__tree_.__insert_range_multi(ranges::begin(__range), ranges::end(__range));
|
|
1765
1858
|
}
|
|
1766
1859
|
# endif
|
|
1767
1860
|
|
|
@@ -1783,10 +1876,10 @@ public:
|
|
|
1783
1876
|
"node_type with incompatible allocator passed to multimap::insert()");
|
|
1784
1877
|
return __tree_.template __node_handle_insert_multi<node_type>(__hint.__i_, std::move(__nh));
|
|
1785
1878
|
}
|
|
1786
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1879
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(key_type const& __key) {
|
|
1787
1880
|
return __tree_.template __node_handle_extract<node_type>(__key);
|
|
1788
1881
|
}
|
|
1789
|
-
_LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1882
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI node_type extract(const_iterator __it) {
|
|
1790
1883
|
return __tree_.template __node_handle_extract<node_type>(__it.__i_);
|
|
1791
1884
|
}
|
|
1792
1885
|
template <class _Compare2>
|
|
@@ -1821,75 +1914,89 @@ public:
|
|
|
1821
1914
|
__tree_.swap(__m.__tree_);
|
|
1822
1915
|
}
|
|
1823
1916
|
|
|
1824
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1825
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1917
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __k) { return __tree_.find(__k); }
|
|
1918
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __k) const { return __tree_.find(__k); }
|
|
1826
1919
|
# if _LIBCPP_STD_VER >= 14
|
|
1827
1920
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1828
|
-
_LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
1921
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator find(const _K2& __k) {
|
|
1829
1922
|
return __tree_.find(__k);
|
|
1830
1923
|
}
|
|
1831
1924
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1832
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
1925
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator find(const _K2& __k) const {
|
|
1833
1926
|
return __tree_.find(__k);
|
|
1834
1927
|
}
|
|
1835
1928
|
# endif
|
|
1836
1929
|
|
|
1837
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1930
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const key_type& __k) const {
|
|
1931
|
+
return __tree_.__count_multi(__k);
|
|
1932
|
+
}
|
|
1838
1933
|
# if _LIBCPP_STD_VER >= 14
|
|
1839
1934
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1840
|
-
_LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1935
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type count(const _K2& __k) const {
|
|
1841
1936
|
return __tree_.__count_multi(__k);
|
|
1842
1937
|
}
|
|
1843
1938
|
# endif
|
|
1844
1939
|
|
|
1845
1940
|
# if _LIBCPP_STD_VER >= 20
|
|
1846
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1941
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const key_type& __k) const { return find(__k) != end(); }
|
|
1847
1942
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1848
|
-
_LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
1943
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool contains(const _K2& __k) const {
|
|
1849
1944
|
return find(__k) != end();
|
|
1850
1945
|
}
|
|
1851
1946
|
# endif // _LIBCPP_STD_VER >= 20
|
|
1852
1947
|
|
|
1853
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1854
|
-
|
|
1948
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) {
|
|
1949
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1950
|
+
}
|
|
1951
|
+
|
|
1952
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
|
|
1953
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1855
1956
|
# if _LIBCPP_STD_VER >= 14
|
|
1856
1957
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1857
|
-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
1858
|
-
return __tree_.
|
|
1958
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
|
|
1959
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1859
1960
|
}
|
|
1860
1961
|
|
|
1861
1962
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1862
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
1863
|
-
return __tree_.
|
|
1963
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
|
|
1964
|
+
return __tree_.__lower_bound_multi(__k);
|
|
1864
1965
|
}
|
|
1865
1966
|
# endif
|
|
1866
1967
|
|
|
1867
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1868
|
-
|
|
1968
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) {
|
|
1969
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
|
|
1973
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1869
1976
|
# if _LIBCPP_STD_VER >= 14
|
|
1870
1977
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1871
|
-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1872
|
-
return __tree_.
|
|
1978
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
|
|
1979
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1873
1980
|
}
|
|
1874
1981
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1875
|
-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
1876
|
-
return __tree_.
|
|
1982
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
|
|
1983
|
+
return __tree_.__upper_bound_multi(__k);
|
|
1877
1984
|
}
|
|
1878
1985
|
# endif
|
|
1879
1986
|
|
|
1880
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1987
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __k) {
|
|
1881
1988
|
return __tree_.__equal_range_multi(__k);
|
|
1882
1989
|
}
|
|
1883
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1990
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __k) const {
|
|
1884
1991
|
return __tree_.__equal_range_multi(__k);
|
|
1885
1992
|
}
|
|
1886
1993
|
# if _LIBCPP_STD_VER >= 14
|
|
1887
1994
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1888
|
-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1995
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _K2& __k) {
|
|
1889
1996
|
return __tree_.__equal_range_multi(__k);
|
|
1890
1997
|
}
|
|
1891
1998
|
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
|
|
1892
|
-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1999
|
+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _K2& __k) const {
|
|
1893
2000
|
return __tree_.__equal_range_multi(__k);
|
|
1894
2001
|
}
|
|
1895
2002
|
# endif
|
|
@@ -1901,6 +2008,8 @@ private:
|
|
|
1901
2008
|
|
|
1902
2009
|
typedef __map_node_destructor<__node_allocator> _Dp;
|
|
1903
2010
|
typedef unique_ptr<__node, _Dp> __node_holder;
|
|
2011
|
+
|
|
2012
|
+
friend struct __specialized_algorithm<_Algorithm::__for_each, __single_range<multimap> >;
|
|
1904
2013
|
};
|
|
1905
2014
|
|
|
1906
2015
|
# if _LIBCPP_STD_VER >= 17
|
|
@@ -1908,8 +2017,8 @@ template <class _InputIterator,
|
|
|
1908
2017
|
class _Compare = less<__iter_key_type<_InputIterator>>,
|
|
1909
2018
|
class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
|
|
1910
2019
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1911
|
-
class = enable_if_t<!
|
|
1912
|
-
class = enable_if_t<
|
|
2020
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
2021
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1913
2022
|
multimap(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1914
2023
|
-> multimap<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare, _Allocator>;
|
|
1915
2024
|
|
|
@@ -1917,8 +2026,8 @@ multimap(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Al
|
|
|
1917
2026
|
template <ranges::input_range _Range,
|
|
1918
2027
|
class _Compare = less<__range_key_type<_Range>>,
|
|
1919
2028
|
class _Allocator = allocator<__range_to_alloc_type<_Range>>,
|
|
1920
|
-
class = enable_if_t<!
|
|
1921
|
-
class = enable_if_t<
|
|
2029
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
2030
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1922
2031
|
multimap(from_range_t, _Range&&, _Compare = _Compare(), _Allocator = _Allocator())
|
|
1923
2032
|
-> multimap<__range_key_type<_Range>, __range_mapped_type<_Range>, _Compare, _Allocator>;
|
|
1924
2033
|
# endif
|
|
@@ -1927,16 +2036,15 @@ template <class _Key,
|
|
|
1927
2036
|
class _Tp,
|
|
1928
2037
|
class _Compare = less<remove_const_t<_Key>>,
|
|
1929
2038
|
class _Allocator = allocator<pair<const _Key, _Tp>>,
|
|
1930
|
-
class = enable_if_t<!
|
|
1931
|
-
class = enable_if_t<
|
|
1932
|
-
multimap(initializer_list<pair<_Key, _Tp>>,
|
|
1933
|
-
|
|
1934
|
-
_Allocator = _Allocator()) -> multimap<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;
|
|
2039
|
+
class = enable_if_t<!__is_allocator_v<_Compare>>,
|
|
2040
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
2041
|
+
multimap(initializer_list<pair<_Key, _Tp>>, _Compare = _Compare(), _Allocator = _Allocator())
|
|
2042
|
+
-> multimap<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;
|
|
1935
2043
|
|
|
1936
2044
|
template <class _InputIterator,
|
|
1937
2045
|
class _Allocator,
|
|
1938
2046
|
class = enable_if_t<__has_input_iterator_category<_InputIterator>::value, void>,
|
|
1939
|
-
class = enable_if_t<
|
|
2047
|
+
class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1940
2048
|
multimap(_InputIterator, _InputIterator, _Allocator)
|
|
1941
2049
|
-> multimap<__iter_key_type<_InputIterator>,
|
|
1942
2050
|
__iter_mapped_type<_InputIterator>,
|
|
@@ -1944,26 +2052,30 @@ multimap(_InputIterator, _InputIterator, _Allocator)
|
|
|
1944
2052
|
_Allocator>;
|
|
1945
2053
|
|
|
1946
2054
|
# if _LIBCPP_STD_VER >= 23
|
|
1947
|
-
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<
|
|
2055
|
+
template <ranges::input_range _Range, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
1948
2056
|
multimap(from_range_t, _Range&&, _Allocator)
|
|
1949
2057
|
-> multimap<__range_key_type<_Range>, __range_mapped_type<_Range>, less<__range_key_type<_Range>>, _Allocator>;
|
|
1950
2058
|
# endif
|
|
1951
2059
|
|
|
1952
|
-
template <class _Key, class _Tp, class _Allocator, class = enable_if_t<
|
|
1953
|
-
multimap(initializer_list<pair<_Key, _Tp>>,
|
|
1954
|
-
|
|
2060
|
+
template <class _Key, class _Tp, class _Allocator, class = enable_if_t<__is_allocator_v<_Allocator>>>
|
|
2061
|
+
multimap(initializer_list<pair<_Key, _Tp>>, _Allocator)
|
|
2062
|
+
-> multimap<remove_const_t<_Key>, _Tp, less<remove_const_t<_Key>>, _Allocator>;
|
|
1955
2063
|
# endif
|
|
1956
2064
|
|
|
1957
|
-
#
|
|
2065
|
+
# if _LIBCPP_STD_VER >= 14
|
|
1958
2066
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
1959
|
-
multimap<_Key, _Tp, _Compare, _Allocator
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
2067
|
+
struct __specialized_algorithm<_Algorithm::__for_each, __single_range<multimap<_Key, _Tp, _Compare, _Allocator>>> {
|
|
2068
|
+
using __map _LIBCPP_NODEBUG = multimap<_Key, _Tp, _Compare, _Allocator>;
|
|
2069
|
+
|
|
2070
|
+
static const bool __has_algorithm = true;
|
|
2071
|
+
|
|
2072
|
+
template <class _Map, class _Func, class _Proj>
|
|
2073
|
+
_LIBCPP_HIDE_FROM_ABI static auto operator()(_Map&& __map, _Func __func, _Proj __proj) {
|
|
2074
|
+
auto [_, __func2] = __specialized_algorithm<_Algorithm::__for_each, __single_range<typename __map::__base>>()(
|
|
2075
|
+
__map.__tree_, std::move(__func), std::move(__proj));
|
|
2076
|
+
return std::make_pair(__map.end(), std::move(__func2));
|
|
1965
2077
|
}
|
|
1966
|
-
}
|
|
2078
|
+
};
|
|
1967
2079
|
# endif
|
|
1968
2080
|
|
|
1969
2081
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|