@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.296
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 +3 -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/LibCDirs.zig +15 -6
- 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/tuple
CHANGED
|
@@ -106,6 +106,11 @@ public:
|
|
|
106
106
|
|
|
107
107
|
void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...)); // constexpr in C++20
|
|
108
108
|
constexpr void swap(const tuple&) const noexcept(see-below); // C++23
|
|
109
|
+
|
|
110
|
+
template<tuple-like UTuple>
|
|
111
|
+
friend constexpr bool operator==(const tuple& t, const UTuple& u); // C++23
|
|
112
|
+
template<tuple-like UTuple>
|
|
113
|
+
friend constexpr auto operator<=>(const tuple& t, const UTuple& u); // C++23
|
|
109
114
|
};
|
|
110
115
|
|
|
111
116
|
|
|
@@ -220,19 +225,16 @@ template <class... Types>
|
|
|
220
225
|
# include <__config>
|
|
221
226
|
# include <__cstddef/size_t.h>
|
|
222
227
|
# include <__fwd/array.h>
|
|
228
|
+
# include <__fwd/get.h>
|
|
223
229
|
# include <__fwd/pair.h>
|
|
224
230
|
# include <__fwd/tuple.h>
|
|
225
231
|
# include <__memory/allocator_arg_t.h>
|
|
226
232
|
# include <__memory/uses_allocator.h>
|
|
227
233
|
# include <__tuple/find_index.h>
|
|
228
234
|
# include <__tuple/ignore.h>
|
|
229
|
-
# include <__tuple/make_tuple_types.h>
|
|
230
|
-
# include <__tuple/sfinae_helpers.h>
|
|
231
235
|
# include <__tuple/tuple_element.h>
|
|
232
|
-
# include <__tuple/
|
|
233
|
-
# include <__tuple/tuple_like_ext.h>
|
|
236
|
+
# include <__tuple/tuple_like.h>
|
|
234
237
|
# include <__tuple/tuple_size.h>
|
|
235
|
-
# include <__tuple/tuple_types.h>
|
|
236
238
|
# include <__type_traits/common_reference.h>
|
|
237
239
|
# include <__type_traits/common_type.h>
|
|
238
240
|
# include <__type_traits/conditional.h>
|
|
@@ -241,7 +243,6 @@ template <class... Types>
|
|
|
241
243
|
# include <__type_traits/disjunction.h>
|
|
242
244
|
# include <__type_traits/enable_if.h>
|
|
243
245
|
# include <__type_traits/invoke.h>
|
|
244
|
-
# include <__type_traits/is_arithmetic.h>
|
|
245
246
|
# include <__type_traits/is_assignable.h>
|
|
246
247
|
# include <__type_traits/is_constructible.h>
|
|
247
248
|
# include <__type_traits/is_convertible.h>
|
|
@@ -251,7 +252,6 @@ template <class... Types>
|
|
|
251
252
|
# include <__type_traits/is_nothrow_assignable.h>
|
|
252
253
|
# include <__type_traits/is_nothrow_constructible.h>
|
|
253
254
|
# include <__type_traits/is_reference.h>
|
|
254
|
-
# include <__type_traits/is_replaceable.h>
|
|
255
255
|
# include <__type_traits/is_same.h>
|
|
256
256
|
# include <__type_traits/is_swappable.h>
|
|
257
257
|
# include <__type_traits/is_trivially_relocatable.h>
|
|
@@ -263,12 +263,12 @@ template <class... Types>
|
|
|
263
263
|
# include <__type_traits/remove_cv.h>
|
|
264
264
|
# include <__type_traits/remove_cvref.h>
|
|
265
265
|
# include <__type_traits/remove_reference.h>
|
|
266
|
+
# include <__type_traits/type_list.h>
|
|
266
267
|
# include <__type_traits/unwrap_ref.h>
|
|
267
268
|
# include <__utility/declval.h>
|
|
268
269
|
# include <__utility/forward.h>
|
|
269
270
|
# include <__utility/integer_sequence.h>
|
|
270
271
|
# include <__utility/move.h>
|
|
271
|
-
# include <__utility/piecewise_construct.h>
|
|
272
272
|
# include <__utility/swap.h>
|
|
273
273
|
# include <version>
|
|
274
274
|
|
|
@@ -288,9 +288,65 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
288
288
|
|
|
289
289
|
# ifndef _LIBCPP_CXX03_LANG
|
|
290
290
|
|
|
291
|
+
template <size_t _Ip, class _Tp, class _Up>
|
|
292
|
+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool __tuple_compare_equal(const _Tp& __x, const _Up& __y) {
|
|
293
|
+
if constexpr (_Ip == 0)
|
|
294
|
+
return true;
|
|
295
|
+
else
|
|
296
|
+
return std::__tuple_compare_equal<_Ip - 1>(__x, __y) && std::get<_Ip - 1>(__x) == std::get<_Ip - 1>(__y);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
# if _LIBCPP_STD_VER >= 26
|
|
300
|
+
template <class _Tp, class _Up, class _IndexSeq = make_index_sequence<tuple_size_v<_Tp>>>
|
|
301
|
+
inline constexpr bool __can_tuple_compare_equal = false;
|
|
302
|
+
|
|
303
|
+
// TODO(LLVM 23): Remove `tuple_size_v<_Tp> == tuple_size_v<_Up>` here once once LLVM-20 support ends
|
|
304
|
+
// because the resolution of CWG2369 landed in LLVM-21.
|
|
305
|
+
template <class _Tp, class _Up, size_t... _Is>
|
|
306
|
+
requires(tuple_size_v<_Tp> == tuple_size_v<_Up>)
|
|
307
|
+
inline constexpr bool __can_tuple_compare_equal<_Tp, _Up, index_sequence<_Is...>> =
|
|
308
|
+
__all<requires(const tuple_element_t<_Is, _Tp>& __t, const tuple_element_t<_Is, _Up>& __u) {
|
|
309
|
+
{ __t == __u } -> __boolean_testable;
|
|
310
|
+
}...>::value;
|
|
311
|
+
# endif // _LIBCPP_STD_VER >= 26
|
|
312
|
+
|
|
313
|
+
# if _LIBCPP_STD_VER >= 20
|
|
314
|
+
template <class _Ret, class _Tp, class _Up, size_t... _Is>
|
|
315
|
+
_LIBCPP_HIDE_FROM_ABI constexpr _Ret __tuple_compare_three_way(const _Tp& __x, const _Up& __y, index_sequence<_Is...>) {
|
|
316
|
+
_Ret __result = strong_ordering::equal;
|
|
317
|
+
static_cast<void>(
|
|
318
|
+
((__result = std::__synth_three_way(std::get<_Is>(__x), std::get<_Is>(__y)), __result != 0) || ...));
|
|
319
|
+
return __result;
|
|
320
|
+
}
|
|
321
|
+
# endif // _LIBCPP_STD_VER >= 20
|
|
322
|
+
|
|
323
|
+
# if _LIBCPP_STD_VER >= 23
|
|
324
|
+
template <class _Tp>
|
|
325
|
+
concept __tuple_like_no_tuple = __tuple_like<_Tp> && !__is_tuple_v<_Tp>;
|
|
326
|
+
|
|
327
|
+
template <class _Tp, class _Up, class _IndexSeq>
|
|
328
|
+
struct __tuple_common_comparison_category_impl {};
|
|
329
|
+
|
|
330
|
+
// TODO(LLVM 23): Remove `tuple_size_v<_Tp> == tuple_size_v<_Up>` here once once LLVM-20 support ends
|
|
331
|
+
// because the resolution of CWG2369 landed in LLVM-21.
|
|
332
|
+
template <class _Tp, class _Up, size_t... _Is>
|
|
333
|
+
requires(tuple_size_v<_Tp> == tuple_size_v<_Up>) && requires {
|
|
334
|
+
typename common_comparison_category_t<
|
|
335
|
+
__synth_three_way_result<tuple_element_t<_Is, _Tp>, tuple_element_t<_Is, _Up>>...>;
|
|
336
|
+
}
|
|
337
|
+
struct __tuple_common_comparison_category_impl<_Tp, _Up, index_sequence<_Is...>> {
|
|
338
|
+
using type _LIBCPP_NODEBUG =
|
|
339
|
+
common_comparison_category_t<__synth_three_way_result<tuple_element_t<_Is, _Tp>, tuple_element_t<_Is, _Up>>...>;
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
template <__tuple_like _Tp, __tuple_like _Up>
|
|
343
|
+
using __tuple_common_comparison_category _LIBCPP_NODEBUG =
|
|
344
|
+
__tuple_common_comparison_category_impl<_Tp, _Up, make_index_sequence<tuple_size_v<_Tp>>>::type;
|
|
345
|
+
# endif // _LIBCPP_STD_VER >= 23
|
|
346
|
+
|
|
291
347
|
// __tuple_leaf
|
|
292
348
|
|
|
293
|
-
template <size_t _Ip, class _Hp, bool = is_empty<_Hp>::value && !
|
|
349
|
+
template <size_t _Ip, class _Hp, bool = is_empty<_Hp>::value && !__is_final_v<_Hp> >
|
|
294
350
|
class __tuple_leaf;
|
|
295
351
|
|
|
296
352
|
template <size_t _Ip, class _Hp, bool _Ep>
|
|
@@ -444,62 +500,52 @@ public:
|
|
|
444
500
|
template <class... _Tp>
|
|
445
501
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void __swallow(_Tp&&...) _NOEXCEPT {}
|
|
446
502
|
|
|
447
|
-
template <class _Tp>
|
|
448
|
-
struct __all_default_constructible;
|
|
449
|
-
|
|
450
|
-
template <class... _Tp>
|
|
451
|
-
struct __all_default_constructible<__tuple_types<_Tp...>> : __all<is_default_constructible<_Tp>::value...> {};
|
|
452
|
-
|
|
453
503
|
// __tuple_impl
|
|
454
504
|
|
|
455
505
|
template <class _Indx, class... _Tp>
|
|
456
506
|
struct __tuple_impl;
|
|
457
507
|
|
|
508
|
+
struct __forward_args {};
|
|
509
|
+
struct __value_init {};
|
|
510
|
+
struct __from_tuple {};
|
|
511
|
+
|
|
458
512
|
template <size_t... _Indx, class... _Tp>
|
|
459
513
|
struct _LIBCPP_DECLSPEC_EMPTY_BASES
|
|
460
|
-
__tuple_impl<
|
|
514
|
+
__tuple_impl<__index_sequence<_Indx...>, _Tp...> : public __tuple_leaf<_Indx, _Tp>... {
|
|
461
515
|
_LIBCPP_HIDE_FROM_ABI constexpr __tuple_impl() noexcept(
|
|
462
516
|
__all<is_nothrow_default_constructible<_Tp>::value...>::value) {}
|
|
463
517
|
|
|
464
|
-
template <
|
|
465
|
-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __tuple_impl(
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
template <class _Alloc, size_t... _Uf, class... _Tf, size_t... _Ul, class... _Tl, class... _Up>
|
|
518
|
+
template <class... _Args>
|
|
519
|
+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __tuple_impl(__forward_args, _Args&&... __args)
|
|
520
|
+
: __tuple_leaf<_Indx, _Tp>(std::forward<_Args>(__args))... {}
|
|
521
|
+
|
|
522
|
+
template <class _Alloc>
|
|
523
|
+
_LIBCPP_HIDE_FROM_ABI
|
|
524
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __tuple_impl(allocator_arg_t, const _Alloc& __alloc, __value_init)
|
|
525
|
+
: __tuple_leaf<_Indx, _Tp>(__uses_alloc_ctor<_Tp, _Alloc>(), __alloc)... {}
|
|
526
|
+
|
|
527
|
+
template <class _Alloc, class... _Args>
|
|
475
528
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __tuple_impl(
|
|
476
|
-
allocator_arg_t,
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
: __tuple_leaf<_Uf, _Tf>(__uses_alloc_ctor<_Tf, _Alloc, _Up>(), __a, std::forward<_Up>(__u))...,
|
|
484
|
-
__tuple_leaf<_Ul, _Tl>(__uses_alloc_ctor<_Tl, _Alloc>(), __a)... {}
|
|
485
|
-
|
|
486
|
-
template <class _Tuple, __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value, int> = 0>
|
|
487
|
-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __tuple_impl(_Tuple&& __t) noexcept(
|
|
488
|
-
(__all<is_nothrow_constructible<
|
|
489
|
-
_Tp,
|
|
490
|
-
typename tuple_element<_Indx, typename __make_tuple_types<_Tuple>::type>::type>::value...>::value))
|
|
529
|
+
allocator_arg_t, const _Alloc& __alloc, __forward_args, _Args&&... __args)
|
|
530
|
+
: __tuple_leaf<_Indx, _Tp>(__uses_alloc_ctor<_Tp, _Alloc, _Args>(), __alloc, std::forward<_Args>(__args))... {}
|
|
531
|
+
|
|
532
|
+
template <class _Tuple>
|
|
533
|
+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __tuple_impl(__from_tuple, _Tuple&& __t) noexcept(
|
|
534
|
+
(__all<is_nothrow_constructible<_Tp, __copy_cvref_t<_Tuple, __tuple_element_t<_Indx, __remove_cvref_t<_Tuple>>>>::
|
|
535
|
+
value...>::value))
|
|
491
536
|
: __tuple_leaf<_Indx, _Tp>(
|
|
492
|
-
std::forward<
|
|
537
|
+
std::forward<__copy_cvref_t<_Tuple, __tuple_element_t<_Indx, __remove_cvref_t<_Tuple>>>>(
|
|
493
538
|
std::get<_Indx>(__t)))... {}
|
|
494
539
|
|
|
495
|
-
template <class _Alloc, class _Tuple
|
|
496
|
-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
540
|
+
template <class _Alloc, class _Tuple>
|
|
541
|
+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
542
|
+
__tuple_impl(allocator_arg_t, const _Alloc& __a, __from_tuple, _Tuple&& __t)
|
|
497
543
|
: __tuple_leaf<_Indx, _Tp>(
|
|
498
544
|
__uses_alloc_ctor<_Tp,
|
|
499
545
|
_Alloc,
|
|
500
|
-
|
|
546
|
+
__copy_cvref_t<_Tuple, __tuple_element_t<_Indx, __remove_cvref_t<_Tuple>>>>(),
|
|
501
547
|
__a,
|
|
502
|
-
std::forward<
|
|
548
|
+
std::forward<__copy_cvref_t<_Tuple, __tuple_element_t<_Indx, __remove_cvref_t<_Tuple>>>>(
|
|
503
549
|
std::get<_Indx>(__t)))... {}
|
|
504
550
|
|
|
505
551
|
__tuple_impl(const __tuple_impl&) = default;
|
|
@@ -518,19 +564,19 @@ struct _LIBCPP_DECLSPEC_EMPTY_BASES
|
|
|
518
564
|
|
|
519
565
|
template <class _Dest, class _Source, size_t... _Np>
|
|
520
566
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void
|
|
521
|
-
__memberwise_copy_assign(_Dest& __dest, _Source const& __source,
|
|
567
|
+
__memberwise_copy_assign(_Dest& __dest, _Source const& __source, __index_sequence<_Np...>) {
|
|
522
568
|
std::__swallow(((std::get<_Np>(__dest) = std::get<_Np>(__source)), void(), 0)...);
|
|
523
569
|
}
|
|
524
570
|
|
|
525
571
|
template <class _Dest, class _Source, class... _Up, size_t... _Np>
|
|
526
572
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void
|
|
527
|
-
__memberwise_forward_assign(_Dest& __dest, _Source&& __source,
|
|
573
|
+
__memberwise_forward_assign(_Dest& __dest, _Source&& __source, __type_list<_Up...>, __index_sequence<_Np...>) {
|
|
528
574
|
std::__swallow(((std::get<_Np>(__dest) = std::forward<_Up>(std::get<_Np>(__source))), void(), 0)...);
|
|
529
575
|
}
|
|
530
576
|
|
|
531
577
|
template <class... _Tp>
|
|
532
578
|
class _LIBCPP_NO_SPECIALIZATIONS tuple {
|
|
533
|
-
typedef __tuple_impl<
|
|
579
|
+
typedef __tuple_impl<__index_sequence_for<_Tp...>, _Tp...> _BaseT;
|
|
534
580
|
|
|
535
581
|
_BaseT __base_;
|
|
536
582
|
|
|
@@ -549,7 +595,6 @@ class _LIBCPP_NO_SPECIALIZATIONS tuple {
|
|
|
549
595
|
public:
|
|
550
596
|
using __trivially_relocatable _LIBCPP_NODEBUG =
|
|
551
597
|
__conditional_t<_And<__libcpp_is_trivially_relocatable<_Tp>...>::value, tuple, void>;
|
|
552
|
-
using __replaceable _LIBCPP_NODEBUG = __conditional_t<_And<__is_replaceable<_Tp>...>::value, tuple, void>;
|
|
553
598
|
|
|
554
599
|
// [tuple.cnstr]
|
|
555
600
|
|
|
@@ -566,12 +611,7 @@ public:
|
|
|
566
611
|
__enable_if_t< _And< _IsDefault<_Tp>... >::value, int> = 0>
|
|
567
612
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_Lazy<_And, _IsImpDefault<_Tp>...> >::value)
|
|
568
613
|
tuple(allocator_arg_t, _Alloc const& __a)
|
|
569
|
-
: __base_(allocator_arg_t(),
|
|
570
|
-
__a,
|
|
571
|
-
__tuple_indices<>(),
|
|
572
|
-
__tuple_types<>(),
|
|
573
|
-
typename __make_tuple_indices<sizeof...(_Tp), 0>::type(),
|
|
574
|
-
__tuple_types<_Tp...>()) {}
|
|
614
|
+
: __base_(allocator_arg_t(), __a, __value_init{}) {}
|
|
575
615
|
|
|
576
616
|
// tuple(const T&...) constructors (including allocator_arg_t variants)
|
|
577
617
|
template <template <class...> class _And = _And,
|
|
@@ -579,11 +619,7 @@ public:
|
|
|
579
619
|
_LIBCPP_HIDE_FROM_ABI
|
|
580
620
|
_LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_Lazy<_And, is_convertible<const _Tp&, _Tp>...> >::value)
|
|
581
621
|
tuple(const _Tp&... __t) noexcept(_And<is_nothrow_copy_constructible<_Tp>...>::value)
|
|
582
|
-
: __base_(
|
|
583
|
-
typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
|
|
584
|
-
typename __make_tuple_indices<0>::type(),
|
|
585
|
-
typename __make_tuple_types<tuple, 0>::type(),
|
|
586
|
-
__t...) {}
|
|
622
|
+
: __base_(__forward_args{}, __t...) {}
|
|
587
623
|
|
|
588
624
|
template <class _Alloc,
|
|
589
625
|
template <class...> class _And = _And,
|
|
@@ -591,13 +627,7 @@ public:
|
|
|
591
627
|
_LIBCPP_HIDE_FROM_ABI
|
|
592
628
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_Lazy<_And, is_convertible<const _Tp&, _Tp>...> >::value)
|
|
593
629
|
tuple(allocator_arg_t, const _Alloc& __a, const _Tp&... __t)
|
|
594
|
-
: __base_(allocator_arg_t(),
|
|
595
|
-
__a,
|
|
596
|
-
typename __make_tuple_indices<sizeof...(_Tp)>::type(),
|
|
597
|
-
typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
|
|
598
|
-
typename __make_tuple_indices<0>::type(),
|
|
599
|
-
typename __make_tuple_types<tuple, 0>::type(),
|
|
600
|
-
__t...) {}
|
|
630
|
+
: __base_(allocator_arg_t(), __a, __forward_args{}, __t...) {}
|
|
601
631
|
|
|
602
632
|
// tuple(U&& ...) constructors (including allocator_arg_t variants)
|
|
603
633
|
template <class... _Up>
|
|
@@ -616,11 +646,7 @@ public:
|
|
|
616
646
|
int> = 0>
|
|
617
647
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_Lazy<_And, is_convertible<_Up, _Tp>...> >::value)
|
|
618
648
|
tuple(_Up&&... __u) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
|
|
619
|
-
: __base_(
|
|
620
|
-
typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
|
|
621
|
-
typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
|
|
622
|
-
typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
|
|
623
|
-
std::forward<_Up>(__u)...) {}
|
|
649
|
+
: __base_(__forward_args{}, std::forward<_Up>(__u)...) {}
|
|
624
650
|
|
|
625
651
|
template <class _Alloc,
|
|
626
652
|
class... _Up,
|
|
@@ -628,13 +654,7 @@ public:
|
|
|
628
654
|
int> = 0>
|
|
629
655
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_Lazy<_And, is_convertible<_Up, _Tp>...> >::value)
|
|
630
656
|
tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
|
|
631
|
-
: __base_(allocator_arg_t(),
|
|
632
|
-
__a,
|
|
633
|
-
typename __make_tuple_indices<sizeof...(_Up)>::type(),
|
|
634
|
-
typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
|
|
635
|
-
typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
|
|
636
|
-
typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
|
|
637
|
-
std::forward<_Up>(__u)...) {}
|
|
657
|
+
: __base_(allocator_arg_t(), __a, __forward_args{}, std::forward<_Up>(__u)...) {}
|
|
638
658
|
|
|
639
659
|
// Copy and move constructors (including the allocator_arg_t variants)
|
|
640
660
|
tuple(const tuple&) = default;
|
|
@@ -644,13 +664,13 @@ public:
|
|
|
644
664
|
template <class...> class _And = _And,
|
|
645
665
|
__enable_if_t< _And<is_copy_constructible<_Tp>...>::value, int> = 0>
|
|
646
666
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
|
|
647
|
-
: __base_(allocator_arg_t(), __alloc, __t) {}
|
|
667
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), __t) {}
|
|
648
668
|
|
|
649
669
|
template <class _Alloc,
|
|
650
670
|
template <class...> class _And = _And,
|
|
651
671
|
__enable_if_t< _And<is_move_constructible<_Tp>...>::value, int> = 0>
|
|
652
672
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
|
|
653
|
-
: __base_(allocator_arg_t(), __alloc, std::move(__t)) {}
|
|
673
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), std::move(__t)) {}
|
|
654
674
|
|
|
655
675
|
// tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
|
|
656
676
|
|
|
@@ -683,7 +703,7 @@ public:
|
|
|
683
703
|
_LIBCPP_HIDE_FROM_ABI
|
|
684
704
|
_LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_Lazy<_And, is_convertible<const _Up&, _Tp>...> >::value)
|
|
685
705
|
tuple(const tuple<_Up...>& __t) noexcept(_And<is_nothrow_constructible<_Tp, const _Up&>...>::value)
|
|
686
|
-
: __base_(__t) {}
|
|
706
|
+
: __base_(__from_tuple(), __t) {}
|
|
687
707
|
|
|
688
708
|
template <class... _Up,
|
|
689
709
|
class _Alloc,
|
|
@@ -691,33 +711,33 @@ public:
|
|
|
691
711
|
_LIBCPP_HIDE_FROM_ABI
|
|
692
712
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_Lazy<_And, is_convertible<const _Up&, _Tp>...> >::value)
|
|
693
713
|
tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
|
|
694
|
-
: __base_(allocator_arg_t(), __a, __t) {}
|
|
714
|
+
: __base_(allocator_arg_t(), __a, __from_tuple(), __t) {}
|
|
695
715
|
|
|
696
716
|
# if _LIBCPP_STD_VER >= 23
|
|
697
717
|
// tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
|
|
698
718
|
|
|
699
719
|
template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
|
|
700
720
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_Lazy<_And, is_convertible<_Up&, _Tp>...>::value) tuple(tuple<_Up...>& __t)
|
|
701
|
-
: __base_(__t) {}
|
|
721
|
+
: __base_(__from_tuple(), __t) {}
|
|
702
722
|
|
|
703
723
|
template <class _Alloc, class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
|
|
704
724
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_Lazy<_And, is_convertible<_Up&, _Tp>...>::value)
|
|
705
725
|
tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t)
|
|
706
|
-
: __base_(allocator_arg_t(), __alloc, __t) {}
|
|
726
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), __t) {}
|
|
707
727
|
# endif // _LIBCPP_STD_VER >= 23
|
|
708
728
|
|
|
709
729
|
// tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
|
|
710
730
|
template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value, int> = 0>
|
|
711
731
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_Lazy<_And, is_convertible<_Up, _Tp>...> >::value)
|
|
712
732
|
tuple(tuple<_Up...>&& __t) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
|
|
713
|
-
: __base_(std::move(__t)) {}
|
|
733
|
+
: __base_(__from_tuple(), std::move(__t)) {}
|
|
714
734
|
|
|
715
735
|
template <class _Alloc,
|
|
716
736
|
class... _Up,
|
|
717
737
|
__enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value, int> = 0>
|
|
718
738
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_Lazy<_And, is_convertible<_Up, _Tp>...> >::value)
|
|
719
739
|
tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
|
|
720
|
-
: __base_(allocator_arg_t(), __a, std::move(__t)) {}
|
|
740
|
+
: __base_(allocator_arg_t(), __a, __from_tuple(), std::move(__t)) {}
|
|
721
741
|
|
|
722
742
|
# if _LIBCPP_STD_VER >= 23
|
|
723
743
|
// tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
|
|
@@ -725,14 +745,14 @@ public:
|
|
|
725
745
|
template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
|
|
726
746
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_Lazy<_And, is_convertible<const _Up&&, _Tp>...>::value)
|
|
727
747
|
tuple(const tuple<_Up...>&& __t)
|
|
728
|
-
: __base_(std::move(__t)) {}
|
|
748
|
+
: __base_(__from_tuple(), std::move(__t)) {}
|
|
729
749
|
|
|
730
750
|
template <class _Alloc,
|
|
731
751
|
class... _Up,
|
|
732
752
|
enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
|
|
733
753
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_Lazy<_And, is_convertible<const _Up&&, _Tp>...>::value)
|
|
734
754
|
tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
|
|
735
|
-
: __base_(allocator_arg_t(), __alloc, std::move(__t)) {}
|
|
755
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), std::move(__t)) {}
|
|
736
756
|
# endif // _LIBCPP_STD_VER >= 23
|
|
737
757
|
|
|
738
758
|
// tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
|
|
@@ -767,7 +787,7 @@ public:
|
|
|
767
787
|
_LIBCPP_HIDE_FROM_ABI
|
|
768
788
|
_LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_BothImplicitlyConvertible<const pair<_Up1, _Up2>&> >::value)
|
|
769
789
|
tuple(const pair<_Up1, _Up2>& __p) noexcept(_NothrowConstructibleFromPair<const pair<_Up1, _Up2>&>::value)
|
|
770
|
-
: __base_(__p) {}
|
|
790
|
+
: __base_(__from_tuple(), __p) {}
|
|
771
791
|
|
|
772
792
|
template <class _Alloc,
|
|
773
793
|
class _Up1,
|
|
@@ -777,7 +797,7 @@ public:
|
|
|
777
797
|
_LIBCPP_HIDE_FROM_ABI
|
|
778
798
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_BothImplicitlyConvertible<const pair<_Up1, _Up2>&> >::value)
|
|
779
799
|
tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
|
|
780
|
-
: __base_(allocator_arg_t(), __a, __p) {}
|
|
800
|
+
: __base_(allocator_arg_t(), __a, __from_tuple(), __p) {}
|
|
781
801
|
|
|
782
802
|
# if _LIBCPP_STD_VER >= 23
|
|
783
803
|
// tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
|
|
@@ -785,7 +805,7 @@ public:
|
|
|
785
805
|
template <class _U1, class _U2, enable_if_t< _EnableCtorFromPair<pair<_U1, _U2>&>::value>* = nullptr>
|
|
786
806
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_BothImplicitlyConvertible<pair<_U1, _U2>&>::value)
|
|
787
807
|
tuple(pair<_U1, _U2>& __p)
|
|
788
|
-
: __base_(__p) {}
|
|
808
|
+
: __base_(__from_tuple(), __p) {}
|
|
789
809
|
|
|
790
810
|
template <class _Alloc,
|
|
791
811
|
class _U1,
|
|
@@ -793,7 +813,7 @@ public:
|
|
|
793
813
|
enable_if_t< _EnableCtorFromPair<std::pair<_U1, _U2>&>::value>* = nullptr>
|
|
794
814
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_BothImplicitlyConvertible<pair<_U1, _U2>&>::value)
|
|
795
815
|
tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p)
|
|
796
|
-
: __base_(allocator_arg_t(), __alloc, __p) {}
|
|
816
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), __p) {}
|
|
797
817
|
# endif
|
|
798
818
|
|
|
799
819
|
// tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
|
|
@@ -805,7 +825,7 @@ public:
|
|
|
805
825
|
_LIBCPP_HIDE_FROM_ABI
|
|
806
826
|
_LIBCPP_CONSTEXPR_SINCE_CXX14 explicit(_Not<_BothImplicitlyConvertible<pair<_Up1, _Up2>&&> >::value)
|
|
807
827
|
tuple(pair<_Up1, _Up2>&& __p) noexcept(_NothrowConstructibleFromPair<pair<_Up1, _Up2>&&>::value)
|
|
808
|
-
: __base_(std::move(__p)) {}
|
|
828
|
+
: __base_(__from_tuple(), std::move(__p)) {}
|
|
809
829
|
|
|
810
830
|
template <class _Alloc,
|
|
811
831
|
class _Up1,
|
|
@@ -815,7 +835,7 @@ public:
|
|
|
815
835
|
_LIBCPP_HIDE_FROM_ABI
|
|
816
836
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 explicit(_Not<_BothImplicitlyConvertible<pair<_Up1, _Up2>&&> >::value)
|
|
817
837
|
tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
|
|
818
|
-
: __base_(allocator_arg_t(), __a, std::move(__p)) {}
|
|
838
|
+
: __base_(allocator_arg_t(), __a, __from_tuple(), std::move(__p)) {}
|
|
819
839
|
|
|
820
840
|
# if _LIBCPP_STD_VER >= 23
|
|
821
841
|
// tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
|
|
@@ -823,7 +843,7 @@ public:
|
|
|
823
843
|
template <class _U1, class _U2, enable_if_t< _EnableCtorFromPair<const pair<_U1, _U2>&&>::value>* = nullptr>
|
|
824
844
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_BothImplicitlyConvertible<const pair<_U1, _U2>&&>::value)
|
|
825
845
|
tuple(const pair<_U1, _U2>&& __p)
|
|
826
|
-
: __base_(std::move(__p)) {}
|
|
846
|
+
: __base_(__from_tuple(), std::move(__p)) {}
|
|
827
847
|
|
|
828
848
|
template <class _Alloc,
|
|
829
849
|
class _U1,
|
|
@@ -831,14 +851,14 @@ public:
|
|
|
831
851
|
enable_if_t< _EnableCtorFromPair<const pair<_U1, _U2>&&>::value>* = nullptr>
|
|
832
852
|
_LIBCPP_HIDE_FROM_ABI constexpr explicit(!_BothImplicitlyConvertible<const pair<_U1, _U2>&&>::value)
|
|
833
853
|
tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
|
|
834
|
-
: __base_(allocator_arg_t(), __alloc, std::move(__p)) {}
|
|
854
|
+
: __base_(allocator_arg_t(), __alloc, __from_tuple(), std::move(__p)) {}
|
|
835
855
|
# endif // _LIBCPP_STD_VER >= 23
|
|
836
856
|
|
|
837
857
|
// [tuple.assign]
|
|
838
858
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
839
859
|
operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple) noexcept(
|
|
840
860
|
_And<is_nothrow_copy_assignable<_Tp>...>::value) {
|
|
841
|
-
std::__memberwise_copy_assign(*this, __tuple,
|
|
861
|
+
std::__memberwise_copy_assign(*this, __tuple, __index_sequence_for<_Tp...>());
|
|
842
862
|
return *this;
|
|
843
863
|
}
|
|
844
864
|
|
|
@@ -846,15 +866,14 @@ public:
|
|
|
846
866
|
_LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple const& __tuple) const
|
|
847
867
|
requires(_And<is_copy_assignable<const _Tp>...>::value)
|
|
848
868
|
{
|
|
849
|
-
std::__memberwise_copy_assign(*this, __tuple,
|
|
869
|
+
std::__memberwise_copy_assign(*this, __tuple, __index_sequence_for<_Tp...>());
|
|
850
870
|
return *this;
|
|
851
871
|
}
|
|
852
872
|
|
|
853
873
|
_LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple&& __tuple) const
|
|
854
874
|
requires(_And<is_assignable<const _Tp&, _Tp>...>::value)
|
|
855
875
|
{
|
|
856
|
-
std::__memberwise_forward_assign(
|
|
857
|
-
*this, std::move(__tuple), __tuple_types<_Tp...>(), typename __make_tuple_indices<sizeof...(_Tp)>::type());
|
|
876
|
+
std::__memberwise_forward_assign(*this, std::move(__tuple), __type_list<_Tp...>(), __index_sequence_for<_Tp...>());
|
|
858
877
|
return *this;
|
|
859
878
|
}
|
|
860
879
|
# endif // _LIBCPP_STD_VER >= 23
|
|
@@ -862,8 +881,7 @@ public:
|
|
|
862
881
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
863
882
|
operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple) noexcept(
|
|
864
883
|
_And<is_nothrow_move_assignable<_Tp>...>::value) {
|
|
865
|
-
std::__memberwise_forward_assign(
|
|
866
|
-
*this, std::move(__tuple), __tuple_types<_Tp...>(), typename __make_tuple_indices<sizeof...(_Tp)>::type());
|
|
884
|
+
std::__memberwise_forward_assign(*this, std::move(__tuple), __type_list<_Tp...>(), __index_sequence_for<_Tp...>());
|
|
867
885
|
return *this;
|
|
868
886
|
}
|
|
869
887
|
|
|
@@ -873,7 +891,7 @@ public:
|
|
|
873
891
|
int> = 0>
|
|
874
892
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
875
893
|
operator=(tuple<_Up...> const& __tuple) noexcept(_And<is_nothrow_assignable<_Tp&, _Up const&>...>::value) {
|
|
876
|
-
std::__memberwise_copy_assign(*this, __tuple,
|
|
894
|
+
std::__memberwise_copy_assign(*this, __tuple, __index_sequence_for<_Tp...>());
|
|
877
895
|
return *this;
|
|
878
896
|
}
|
|
879
897
|
|
|
@@ -882,8 +900,7 @@ public:
|
|
|
882
900
|
int> = 0>
|
|
883
901
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
884
902
|
operator=(tuple<_Up...>&& __tuple) noexcept(_And<is_nothrow_assignable<_Tp&, _Up>...>::value) {
|
|
885
|
-
std::__memberwise_forward_assign(
|
|
886
|
-
*this, std::move(__tuple), __tuple_types<_Up...>(), typename __make_tuple_indices<sizeof...(_Tp)>::type());
|
|
903
|
+
std::__memberwise_forward_assign(*this, std::move(__tuple), __type_list<_Up...>(), __index_sequence_for<_Tp...>());
|
|
887
904
|
return *this;
|
|
888
905
|
}
|
|
889
906
|
|
|
@@ -892,7 +909,7 @@ public:
|
|
|
892
909
|
enable_if_t< _And<_BoolConstant<sizeof...(_Tp) == sizeof...(_UTypes)>,
|
|
893
910
|
is_assignable<const _Tp&, const _UTypes&>...>::value>* = nullptr>
|
|
894
911
|
_LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const tuple<_UTypes...>& __u) const {
|
|
895
|
-
std::__memberwise_copy_assign(*this, __u,
|
|
912
|
+
std::__memberwise_copy_assign(*this, __u, index_sequence_for<_Tp...>());
|
|
896
913
|
return *this;
|
|
897
914
|
}
|
|
898
915
|
|
|
@@ -900,8 +917,7 @@ public:
|
|
|
900
917
|
enable_if_t< _And<_BoolConstant<sizeof...(_Tp) == sizeof...(_UTypes)>,
|
|
901
918
|
is_assignable<const _Tp&, _UTypes>...>::value>* = nullptr>
|
|
902
919
|
_LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple<_UTypes...>&& __u) const {
|
|
903
|
-
std::__memberwise_forward_assign(
|
|
904
|
-
*this, __u, __tuple_types<_UTypes...>(), typename __make_tuple_indices<sizeof...(_Tp)>::type());
|
|
920
|
+
std::__memberwise_forward_assign(*this, __u, __type_list<_UTypes...>(), index_sequence_for<_Tp...>());
|
|
905
921
|
return *this;
|
|
906
922
|
}
|
|
907
923
|
# endif // _LIBCPP_STD_VER >= 23
|
|
@@ -967,7 +983,7 @@ public:
|
|
|
967
983
|
__enable_if_t< _And< _BoolConstant<_Np == sizeof...(_Tp)>, is_assignable<_Tp&, _Up const&>... >::value, int> = 0>
|
|
968
984
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
969
985
|
operator=(array<_Up, _Np> const& __array) noexcept(_And<is_nothrow_assignable<_Tp&, _Up const&>...>::value) {
|
|
970
|
-
std::__memberwise_copy_assign(*this, __array,
|
|
986
|
+
std::__memberwise_copy_assign(*this, __array, __index_sequence_for<_Tp...>());
|
|
971
987
|
return *this;
|
|
972
988
|
}
|
|
973
989
|
|
|
@@ -979,10 +995,7 @@ public:
|
|
|
979
995
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
|
|
980
996
|
operator=(array<_Up, _Np>&& __array) noexcept(_And<is_nothrow_assignable<_Tp&, _Up>...>::value) {
|
|
981
997
|
std::__memberwise_forward_assign(
|
|
982
|
-
*this,
|
|
983
|
-
std::move(__array),
|
|
984
|
-
__tuple_types<_If<true, _Up, _Tp>...>(),
|
|
985
|
-
typename __make_tuple_indices<sizeof...(_Tp)>::type());
|
|
998
|
+
*this, std::move(__array), __type_list<_If<true, _Up, _Tp>...>(), __index_sequence_for<_Tp...>());
|
|
986
999
|
return *this;
|
|
987
1000
|
}
|
|
988
1001
|
|
|
@@ -997,7 +1010,24 @@ public:
|
|
|
997
1010
|
noexcept(__all<is_nothrow_swappable_v<const _Tp&>...>::value) {
|
|
998
1011
|
__base_.swap(__t.__base_);
|
|
999
1012
|
}
|
|
1000
|
-
|
|
1013
|
+
|
|
1014
|
+
template <__tuple_like_no_tuple _UTuple>
|
|
1015
|
+
# if _LIBCPP_STD_VER >= 26
|
|
1016
|
+
requires __can_tuple_compare_equal<tuple, _UTuple> && (sizeof...(_Tp) == tuple_size_v<_UTuple>)
|
|
1017
|
+
# endif // _LIBCPP_STD_VER >= 26
|
|
1018
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const tuple& __x, const _UTuple& __y) {
|
|
1019
|
+
static_assert(sizeof...(_Tp) == tuple_size_v<_UTuple>, "Can't compare tuple-like values of different sizes");
|
|
1020
|
+
return std::__tuple_compare_equal<sizeof...(_Tp)>(__x, __y);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
template <__tuple_like_no_tuple _UTuple>
|
|
1024
|
+
requires(sizeof...(_Tp) == tuple_size_v<_UTuple>)
|
|
1025
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr __tuple_common_comparison_category<tuple, _UTuple>
|
|
1026
|
+
operator<=>(const tuple& __x, const _UTuple& __y) {
|
|
1027
|
+
return std::__tuple_compare_three_way<__tuple_common_comparison_category<tuple, _UTuple>>(
|
|
1028
|
+
__x, __y, index_sequence_for<_Tp...>{});
|
|
1029
|
+
}
|
|
1030
|
+
# endif // _LIBCPP_STD_VER >= 23
|
|
1001
1031
|
};
|
|
1002
1032
|
|
|
1003
1033
|
_LIBCPP_DIAGNOSTIC_PUSH
|
|
@@ -1019,6 +1049,21 @@ public:
|
|
|
1019
1049
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple&) _NOEXCEPT {}
|
|
1020
1050
|
# if _LIBCPP_STD_VER >= 23
|
|
1021
1051
|
_LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
|
|
1052
|
+
|
|
1053
|
+
template <__tuple_like_no_tuple _UTuple>
|
|
1054
|
+
# if _LIBCPP_STD_VER >= 26
|
|
1055
|
+
requires(tuple_size_v<_UTuple> == 0)
|
|
1056
|
+
# endif // _LIBCPP_STD_VER >= 26
|
|
1057
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const tuple&, const _UTuple&) {
|
|
1058
|
+
static_assert(tuple_size_v<_UTuple> == 0, "Can't compare tuple-like values of different sizes");
|
|
1059
|
+
return true;
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
template <__tuple_like_no_tuple _UTuple>
|
|
1063
|
+
requires(tuple_size_v<_UTuple> == 0)
|
|
1064
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering operator<=>(const tuple&, const _UTuple&) {
|
|
1065
|
+
return strong_ordering::equal;
|
|
1066
|
+
}
|
|
1022
1067
|
# endif
|
|
1023
1068
|
};
|
|
1024
1069
|
_LIBCPP_DIAGNOSTIC_POP
|
|
@@ -1068,28 +1113,32 @@ swap(const tuple<_Tp...>& __lhs,
|
|
|
1068
1113
|
// get
|
|
1069
1114
|
|
|
1070
1115
|
template <size_t _Ip, class... _Tp>
|
|
1071
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1116
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1117
|
+
typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
|
1072
1118
|
get(tuple<_Tp...>& __t) _NOEXCEPT {
|
|
1073
1119
|
using type _LIBCPP_NODEBUG = typename tuple_element<_Ip, tuple<_Tp...> >::type;
|
|
1074
1120
|
return static_cast<__tuple_leaf<_Ip, type>&>(__t.__base_).get();
|
|
1075
1121
|
}
|
|
1076
1122
|
|
|
1077
1123
|
template <size_t _Ip, class... _Tp>
|
|
1078
|
-
inline _LIBCPP_HIDE_FROM_ABI
|
|
1124
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI
|
|
1125
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
|
1079
1126
|
get(const tuple<_Tp...>& __t) _NOEXCEPT {
|
|
1080
1127
|
using type _LIBCPP_NODEBUG = typename tuple_element<_Ip, tuple<_Tp...> >::type;
|
|
1081
1128
|
return static_cast<const __tuple_leaf<_Ip, type>&>(__t.__base_).get();
|
|
1082
1129
|
}
|
|
1083
1130
|
|
|
1084
1131
|
template <size_t _Ip, class... _Tp>
|
|
1085
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1132
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1133
|
+
typename tuple_element<_Ip, tuple<_Tp...> >::type&&
|
|
1086
1134
|
get(tuple<_Tp...>&& __t) _NOEXCEPT {
|
|
1087
1135
|
using type _LIBCPP_NODEBUG = typename tuple_element<_Ip, tuple<_Tp...> >::type;
|
|
1088
1136
|
return static_cast<type&&>(static_cast<__tuple_leaf<_Ip, type>&&>(__t.__base_).get());
|
|
1089
1137
|
}
|
|
1090
1138
|
|
|
1091
1139
|
template <size_t _Ip, class... _Tp>
|
|
1092
|
-
inline _LIBCPP_HIDE_FROM_ABI
|
|
1140
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI
|
|
1141
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
|
|
1093
1142
|
get(const tuple<_Tp...>&& __t) _NOEXCEPT {
|
|
1094
1143
|
using type _LIBCPP_NODEBUG = typename tuple_element<_Ip, tuple<_Tp...> >::type;
|
|
1095
1144
|
return static_cast<const type&&>(static_cast<const __tuple_leaf<_Ip, type>&&>(__t.__base_).get());
|
|
@@ -1098,22 +1147,22 @@ get(const tuple<_Tp...>&& __t) _NOEXCEPT {
|
|
|
1098
1147
|
# if _LIBCPP_STD_VER >= 14
|
|
1099
1148
|
|
|
1100
1149
|
template <class _T1, class... _Args>
|
|
1101
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _T1& get(tuple<_Args...>& __tup) noexcept {
|
|
1150
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI constexpr _T1& get(tuple<_Args...>& __tup) noexcept {
|
|
1102
1151
|
return std::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
|
|
1103
1152
|
}
|
|
1104
1153
|
|
|
1105
1154
|
template <class _T1, class... _Args>
|
|
1106
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept {
|
|
1155
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept {
|
|
1107
1156
|
return std::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
|
|
1108
1157
|
}
|
|
1109
1158
|
|
|
1110
1159
|
template <class _T1, class... _Args>
|
|
1111
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept {
|
|
1160
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept {
|
|
1112
1161
|
return std::get<__find_exactly_one_t<_T1, _Args...>::value>(std::move(__tup));
|
|
1113
1162
|
}
|
|
1114
1163
|
|
|
1115
1164
|
template <class _T1, class... _Args>
|
|
1116
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept {
|
|
1165
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept {
|
|
1117
1166
|
return std::get<__find_exactly_one_t<_T1, _Args...>::value>(std::move(__tup));
|
|
1118
1167
|
}
|
|
1119
1168
|
|
|
@@ -1122,37 +1171,22 @@ inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& _
|
|
|
1122
1171
|
// tie
|
|
1123
1172
|
|
|
1124
1173
|
template <class... _Tp>
|
|
1125
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&...> tie(_Tp&... __t) _NOEXCEPT {
|
|
1174
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&...> tie(_Tp&... __t) _NOEXCEPT {
|
|
1126
1175
|
return tuple<_Tp&...>(__t...);
|
|
1127
1176
|
}
|
|
1128
1177
|
|
|
1129
1178
|
template <class... _Tp>
|
|
1130
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<__unwrap_ref_decay_t<_Tp>...>
|
|
1179
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<__unwrap_ref_decay_t<_Tp>...>
|
|
1131
1180
|
make_tuple(_Tp&&... __t) {
|
|
1132
1181
|
return tuple<__unwrap_ref_decay_t<_Tp>...>(std::forward<_Tp>(__t)...);
|
|
1133
1182
|
}
|
|
1134
1183
|
|
|
1135
1184
|
template <class... _Tp>
|
|
1136
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&&...>
|
|
1185
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&&...>
|
|
1186
|
+
forward_as_tuple(_Tp&&... __t) _NOEXCEPT {
|
|
1137
1187
|
return tuple<_Tp&&...>(std::forward<_Tp>(__t)...);
|
|
1138
1188
|
}
|
|
1139
1189
|
|
|
1140
|
-
template <size_t _Ip>
|
|
1141
|
-
struct __tuple_equal {
|
|
1142
|
-
template <class _Tp, class _Up>
|
|
1143
|
-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp& __x, const _Up& __y) {
|
|
1144
|
-
return __tuple_equal<_Ip - 1>()(__x, __y) && std::get<_Ip - 1>(__x) == std::get<_Ip - 1>(__y);
|
|
1145
|
-
}
|
|
1146
|
-
};
|
|
1147
|
-
|
|
1148
|
-
template <>
|
|
1149
|
-
struct __tuple_equal<0> {
|
|
1150
|
-
template <class _Tp, class _Up>
|
|
1151
|
-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp&, const _Up&) {
|
|
1152
|
-
return true;
|
|
1153
|
-
}
|
|
1154
|
-
};
|
|
1155
|
-
|
|
1156
1190
|
template <class... _Tp, class... _Up>
|
|
1157
1191
|
# if _LIBCPP_STD_VER >= 26
|
|
1158
1192
|
requires(__all<requires(const _Tp& __t, const _Up& __u) {
|
|
@@ -1162,27 +1196,19 @@ template <class... _Tp, class... _Up>
|
|
|
1162
1196
|
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
|
|
1163
1197
|
operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
|
|
1164
1198
|
static_assert(sizeof...(_Tp) == sizeof...(_Up), "Can't compare tuples of different sizes");
|
|
1165
|
-
return
|
|
1199
|
+
return std::__tuple_compare_equal<sizeof...(_Tp)>(__x, __y);
|
|
1166
1200
|
}
|
|
1167
1201
|
|
|
1168
1202
|
# if _LIBCPP_STD_VER >= 20
|
|
1169
1203
|
|
|
1170
1204
|
// operator<=>
|
|
1171
1205
|
|
|
1172
|
-
template <class... _Tp, class... _Up, size_t... _Is>
|
|
1173
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto
|
|
1174
|
-
__tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...>) {
|
|
1175
|
-
common_comparison_category_t<__synth_three_way_result<_Tp, _Up>...> __result = strong_ordering::equal;
|
|
1176
|
-
static_cast<void>(
|
|
1177
|
-
((__result = std::__synth_three_way(std::get<_Is>(__x), std::get<_Is>(__y)), __result != 0) || ...));
|
|
1178
|
-
return __result;
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
1206
|
template <class... _Tp, class... _Up>
|
|
1182
1207
|
requires(sizeof...(_Tp) == sizeof...(_Up))
|
|
1183
1208
|
_LIBCPP_HIDE_FROM_ABI constexpr common_comparison_category_t<__synth_three_way_result<_Tp, _Up>...>
|
|
1184
1209
|
operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
|
|
1185
|
-
return std::__tuple_compare_three_way
|
|
1210
|
+
return std::__tuple_compare_three_way<common_comparison_category_t<__synth_three_way_result<_Tp, _Up>...>>(
|
|
1211
|
+
__x, __y, index_sequence_for<_Tp...>{});
|
|
1186
1212
|
}
|
|
1187
1213
|
|
|
1188
1214
|
# else // _LIBCPP_STD_VER >= 20
|
|
@@ -1243,65 +1269,59 @@ operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
|
|
|
1243
1269
|
|
|
1244
1270
|
// tuple_cat
|
|
1245
1271
|
|
|
1246
|
-
template <class
|
|
1247
|
-
struct
|
|
1272
|
+
template <class... _Tuples>
|
|
1273
|
+
struct __tuple_cat_return_impl;
|
|
1248
1274
|
|
|
1249
|
-
template <class...
|
|
1250
|
-
struct
|
|
1251
|
-
using type _LIBCPP_NODEBUG = tuple<
|
|
1275
|
+
template <class... _Types>
|
|
1276
|
+
struct __tuple_cat_return_impl<tuple<_Types...>> {
|
|
1277
|
+
using type _LIBCPP_NODEBUG = tuple<_Types...>;
|
|
1252
1278
|
};
|
|
1253
1279
|
|
|
1254
|
-
template <class
|
|
1255
|
-
struct
|
|
1280
|
+
template <class... _Types0, class... _Types1, class... _Tuples>
|
|
1281
|
+
struct __tuple_cat_return_impl<tuple<_Types0...>, tuple<_Types1...>, _Tuples...>
|
|
1282
|
+
: __tuple_cat_return_impl<tuple<_Types0..., _Types1...>, _Tuples...> {};
|
|
1256
1283
|
|
|
1257
|
-
template <class...
|
|
1258
|
-
struct
|
|
1259
|
-
|
|
1260
|
-
typename __tuple_cat_type< tuple<_Types...>,
|
|
1261
|
-
typename __make_tuple_types<__remove_cvref_t<_Tuple0> >::type >::type;
|
|
1262
|
-
};
|
|
1263
|
-
|
|
1264
|
-
template <class... _Types, class _Tuple0, class _Tuple1, class... _Tuples>
|
|
1265
|
-
struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
|
|
1266
|
-
: public __tuple_cat_return_1<
|
|
1267
|
-
typename __tuple_cat_type< tuple<_Types...>,
|
|
1268
|
-
typename __make_tuple_types<__remove_cvref_t<_Tuple0> >::type >::type,
|
|
1269
|
-
__tuple_like_ext<__libcpp_remove_reference_t<_Tuple1> >::value,
|
|
1270
|
-
_Tuple1,
|
|
1271
|
-
_Tuples...> {};
|
|
1284
|
+
template <class... _Types0, class _Tp, class _Up, class... _Tuples>
|
|
1285
|
+
struct __tuple_cat_return_impl<tuple<_Types0...>, pair<_Tp, _Up>, _Tuples...>
|
|
1286
|
+
: __tuple_cat_return_impl<tuple<_Types0..., _Tp, _Up>, _Tuples...> {};
|
|
1272
1287
|
|
|
1273
|
-
template <class
|
|
1274
|
-
struct
|
|
1288
|
+
template <class, class, class>
|
|
1289
|
+
struct __tuple_cat_array;
|
|
1275
1290
|
|
|
1276
|
-
template <class
|
|
1277
|
-
struct
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
_Tuple0,
|
|
1281
|
-
_Tuples...> {};
|
|
1291
|
+
template <class... _Types, class _ValueT, size_t... _Indices>
|
|
1292
|
+
struct __tuple_cat_array<tuple<_Types...>, _ValueT, __index_sequence<_Indices...>> {
|
|
1293
|
+
template <size_t>
|
|
1294
|
+
using __value_type _LIBCPP_NODEBUG = _ValueT;
|
|
1282
1295
|
|
|
1283
|
-
|
|
1284
|
-
struct __tuple_cat_return<> {
|
|
1285
|
-
using type _LIBCPP_NODEBUG = tuple<>;
|
|
1296
|
+
using type _LIBCPP_NODEBUG = tuple<_Types..., __value_type<_Indices>...>;
|
|
1286
1297
|
};
|
|
1287
1298
|
|
|
1288
|
-
|
|
1299
|
+
template <class... _Types, class _ValueT, size_t _Np, class... _Tuples>
|
|
1300
|
+
struct __tuple_cat_return_impl<tuple<_Types...>, array<_ValueT, _Np>, _Tuples...>
|
|
1301
|
+
: __tuple_cat_return_impl<typename __tuple_cat_array<tuple<_Types...>, _ValueT, __make_index_sequence<_Np>>::type,
|
|
1302
|
+
_Tuples...> {};
|
|
1303
|
+
|
|
1304
|
+
template <class... _Tuples>
|
|
1305
|
+
using __tuple_cat_return_t _LIBCPP_NODEBUG =
|
|
1306
|
+
typename __tuple_cat_return_impl<tuple<>, __remove_cvref_t<_Tuples>...>::type;
|
|
1307
|
+
|
|
1308
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<> tuple_cat() { return tuple<>(); }
|
|
1289
1309
|
|
|
1290
1310
|
template <class _Rp, class _Indices, class _Tuple0, class... _Tuples>
|
|
1291
1311
|
struct __tuple_cat_return_ref_imp;
|
|
1292
1312
|
|
|
1293
1313
|
template <class... _Types, size_t... _I0, class _Tuple0>
|
|
1294
|
-
struct __tuple_cat_return_ref_imp<tuple<_Types...>,
|
|
1314
|
+
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __index_sequence<_I0...>, _Tuple0> {
|
|
1295
1315
|
using _T0 _LIBCPP_NODEBUG = __libcpp_remove_reference_t<_Tuple0>;
|
|
1296
1316
|
typedef tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_I0, _T0>::type>&&...> type;
|
|
1297
1317
|
};
|
|
1298
1318
|
|
|
1299
1319
|
template <class... _Types, size_t... _I0, class _Tuple0, class _Tuple1, class... _Tuples>
|
|
1300
|
-
struct __tuple_cat_return_ref_imp<tuple<_Types...>,
|
|
1320
|
+
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __index_sequence<_I0...>, _Tuple0, _Tuple1, _Tuples...>
|
|
1301
1321
|
: public __tuple_cat_return_ref_imp<
|
|
1302
1322
|
tuple<_Types...,
|
|
1303
1323
|
__copy_cvref_t<_Tuple0, typename tuple_element<_I0, __libcpp_remove_reference_t<_Tuple0>>::type>&&...>,
|
|
1304
|
-
|
|
1324
|
+
__make_index_sequence<tuple_size<__libcpp_remove_reference_t<_Tuple1> >::value>,
|
|
1305
1325
|
_Tuple1,
|
|
1306
1326
|
_Tuples...> {};
|
|
1307
1327
|
|
|
@@ -1309,7 +1329,7 @@ template <class _Tuple0, class... _Tuples>
|
|
|
1309
1329
|
struct __tuple_cat_return_ref
|
|
1310
1330
|
: public __tuple_cat_return_ref_imp<
|
|
1311
1331
|
tuple<>,
|
|
1312
|
-
|
|
1332
|
+
__make_index_sequence< tuple_size<__libcpp_remove_reference_t<_Tuple0> >::value >,
|
|
1313
1333
|
_Tuple0,
|
|
1314
1334
|
_Tuples...> {};
|
|
1315
1335
|
|
|
@@ -1317,7 +1337,7 @@ template <class _Types, class _I0, class _J0>
|
|
|
1317
1337
|
struct __tuple_cat;
|
|
1318
1338
|
|
|
1319
1339
|
template <class... _Types, size_t... _I0, size_t... _J0>
|
|
1320
|
-
struct __tuple_cat<tuple<_Types...>,
|
|
1340
|
+
struct __tuple_cat<tuple<_Types...>, __index_sequence<_I0...>, __index_sequence<_J0...>> {
|
|
1321
1341
|
template <class _Tuple0>
|
|
1322
1342
|
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1323
1343
|
typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
|
|
@@ -1335,8 +1355,8 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
|
|
|
1335
1355
|
using _T0 _LIBCPP_NODEBUG = __libcpp_remove_reference_t<_Tuple0>;
|
|
1336
1356
|
using _T1 _LIBCPP_NODEBUG = __libcpp_remove_reference_t<_Tuple1>;
|
|
1337
1357
|
return __tuple_cat<tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_J0, _T0>::type>&&...>,
|
|
1338
|
-
|
|
1339
|
-
|
|
1358
|
+
__make_index_sequence<sizeof...(_Types) + tuple_size<_T0>::value>,
|
|
1359
|
+
__make_index_sequence<tuple_size<_T1>::value>>()(
|
|
1340
1360
|
std::forward_as_tuple(
|
|
1341
1361
|
std::forward<_Types>(std::get<_I0>(__t))..., std::get<_J0>(std::forward<_Tuple0>(__t0))...),
|
|
1342
1362
|
std::forward<_Tuple1>(__t1),
|
|
@@ -1346,21 +1366,21 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
|
|
|
1346
1366
|
|
|
1347
1367
|
template <class _TupleDst, class _TupleSrc, size_t... _Indices>
|
|
1348
1368
|
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _TupleDst
|
|
1349
|
-
__tuple_cat_select_element_wise(_TupleSrc&& __src,
|
|
1369
|
+
__tuple_cat_select_element_wise(_TupleSrc&& __src, __index_sequence<_Indices...>) {
|
|
1350
1370
|
static_assert(tuple_size<_TupleDst>::value == tuple_size<_TupleSrc>::value,
|
|
1351
1371
|
"misuse of __tuple_cat_select_element_wise with tuples of different sizes");
|
|
1352
1372
|
return _TupleDst(std::get<_Indices>(std::forward<_TupleSrc>(__src))...);
|
|
1353
1373
|
}
|
|
1354
1374
|
|
|
1355
1375
|
template <class _Tuple0, class... _Tuples>
|
|
1356
|
-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
|
|
1376
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __tuple_cat_return_t<_Tuple0, _Tuples...>
|
|
1357
1377
|
tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls) {
|
|
1358
1378
|
using _T0 _LIBCPP_NODEBUG = __libcpp_remove_reference_t<_Tuple0>;
|
|
1359
|
-
using _TRet _LIBCPP_NODEBUG =
|
|
1360
|
-
using _T0Indices _LIBCPP_NODEBUG =
|
|
1361
|
-
using _TRetIndices _LIBCPP_NODEBUG =
|
|
1379
|
+
using _TRet _LIBCPP_NODEBUG = __tuple_cat_return_t<_Tuple0, _Tuples...>;
|
|
1380
|
+
using _T0Indices _LIBCPP_NODEBUG = __make_index_sequence<tuple_size<_T0>::value>;
|
|
1381
|
+
using _TRetIndices _LIBCPP_NODEBUG = __make_index_sequence<tuple_size<_TRet>::value>;
|
|
1362
1382
|
return std::__tuple_cat_select_element_wise<_TRet>(
|
|
1363
|
-
__tuple_cat<tuple<>,
|
|
1383
|
+
__tuple_cat<tuple<>, __index_sequence<>, _T0Indices>()(
|
|
1364
1384
|
tuple<>(), std::forward<_Tuple0>(__t0), std::forward<_Tuples>(__tpls)...),
|
|
1365
1385
|
_TRetIndices());
|
|
1366
1386
|
}
|
|
@@ -1376,7 +1396,7 @@ struct uses_allocator<tuple<_Tp...>, _Alloc> : true_type {};
|
|
|
1376
1396
|
// clang-format off
|
|
1377
1397
|
template <class _Fn, class _Tuple, size_t... _Id>
|
|
1378
1398
|
inline _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto)
|
|
1379
|
-
__apply_tuple_impl(_Fn&& __f, _Tuple&& __t,
|
|
1399
|
+
__apply_tuple_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Id...>)
|
|
1380
1400
|
_LIBCPP_NOEXCEPT_RETURN(std::__invoke(std::forward<_Fn>(__f), std::get<_Id>(std::forward<_Tuple>(__t))...))
|
|
1381
1401
|
|
|
1382
1402
|
template <class _Fn, class _Tuple>
|
|
@@ -1384,28 +1404,29 @@ inline _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) apply(_Fn&& __f, _Tuple&&
|
|
|
1384
1404
|
_LIBCPP_NOEXCEPT_RETURN(std::__apply_tuple_impl(
|
|
1385
1405
|
std::forward<_Fn>(__f),
|
|
1386
1406
|
std::forward<_Tuple>(__t),
|
|
1387
|
-
|
|
1407
|
+
make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>()))
|
|
1388
1408
|
|
|
1389
1409
|
#if _LIBCPP_STD_VER >= 20
|
|
1390
1410
|
template <class _Tp, class _Tuple, size_t... _Idx>
|
|
1391
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _Tp __make_from_tuple_impl(_Tuple&& __t,
|
|
1411
|
+
inline _LIBCPP_HIDE_FROM_ABI constexpr _Tp __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>)
|
|
1392
1412
|
noexcept(noexcept(_Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...)))
|
|
1393
1413
|
requires is_constructible_v<_Tp, decltype(std::get<_Idx>(std::forward<_Tuple>(__t)))...> {
|
|
1394
1414
|
return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...);
|
|
1395
1415
|
}
|
|
1396
1416
|
#else
|
|
1397
1417
|
template <class _Tp, class _Tuple, size_t... _Idx>
|
|
1398
|
-
inline _LIBCPP_HIDE_FROM_ABI constexpr _Tp __make_from_tuple_impl(_Tuple&& __t,
|
|
1418
|
+
inline _LIBCPP_HIDE_FROM_ABI constexpr _Tp __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>,
|
|
1399
1419
|
enable_if_t<is_constructible_v<_Tp, decltype(std::get<_Idx>(std::forward<_Tuple>(__t)))...>> * = nullptr)
|
|
1400
1420
|
_LIBCPP_NOEXCEPT_RETURN(_Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...))
|
|
1401
1421
|
#endif // _LIBCPP_STD_VER >= 20
|
|
1422
|
+
#undef _LIBCPP_NOEXCEPT_RETURN
|
|
1402
1423
|
|
|
1403
1424
|
template <class _Tp, class _Tuple,
|
|
1404
|
-
class _Seq =
|
|
1425
|
+
class _Seq = make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>, class = void>
|
|
1405
1426
|
inline constexpr bool __can_make_from_tuple = false;
|
|
1406
1427
|
|
|
1407
1428
|
template <class _Tp, class _Tuple, size_t... _Idx>
|
|
1408
|
-
inline constexpr bool __can_make_from_tuple<_Tp, _Tuple,
|
|
1429
|
+
inline constexpr bool __can_make_from_tuple<_Tp, _Tuple, index_sequence<_Idx...>,
|
|
1409
1430
|
enable_if_t<is_constructible_v<_Tp, decltype(std::get<_Idx>(std::declval<_Tuple>()))...>>> = true;
|
|
1410
1431
|
|
|
1411
1432
|
// Based on LWG3528(https://wg21.link/LWG3528) and http://eel.is/c++draft/description#structure.requirements-9,
|
|
@@ -1418,10 +1439,19 @@ template <class _Tp, class _Tuple>
|
|
|
1418
1439
|
#else
|
|
1419
1440
|
template <class _Tp, class _Tuple, class = enable_if_t<__can_make_from_tuple<_Tp, _Tuple>>> // strengthen
|
|
1420
1441
|
#endif // _LIBCPP_STD_VER >= 20
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1442
|
+
|
|
1443
|
+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI constexpr _Tp make_from_tuple(_Tuple&& __t)
|
|
1444
|
+
noexcept(noexcept(std::__make_from_tuple_impl<_Tp>(std::forward<_Tuple>(__t),
|
|
1445
|
+
make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>()))) {
|
|
1446
|
+
#if _LIBCPP_STD_VER >= 23
|
|
1447
|
+
if constexpr (tuple_size_v<remove_reference_t<_Tuple>> == 1) {
|
|
1448
|
+
static_assert(!std::reference_constructs_from_temporary_v<_Tp, decltype(std::get<0>(std::declval<_Tuple>()))>,
|
|
1449
|
+
"Attempted construction of reference element binds to a temporary whose lifetime has ended");
|
|
1450
|
+
}
|
|
1451
|
+
#endif // _LIBCPP_STD_VER >= 23
|
|
1452
|
+
return std::__make_from_tuple_impl<_Tp>(
|
|
1453
|
+
std::forward<_Tuple>(__t), make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>());
|
|
1454
|
+
}
|
|
1425
1455
|
|
|
1426
1456
|
# endif // _LIBCPP_STD_VER >= 17
|
|
1427
1457
|
|