cuda-cccl 0.3.3__cp313-cp313-win_amd64.whl
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.
Potentially problematic release.
This version of cuda-cccl might be problematic. Click here for more details.
- cuda/cccl/__init__.py +27 -0
- cuda/cccl/_cuda_version_utils.py +24 -0
- cuda/cccl/cooperative/__init__.py +9 -0
- cuda/cccl/cooperative/experimental/__init__.py +24 -0
- cuda/cccl/headers/__init__.py +7 -0
- cuda/cccl/headers/include/__init__.py +1 -0
- cuda/cccl/headers/include/cub/agent/agent_adjacent_difference.cuh +259 -0
- cuda/cccl/headers/include/cub/agent/agent_batch_memcpy.cuh +1182 -0
- cuda/cccl/headers/include/cub/agent/agent_for.cuh +81 -0
- cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +709 -0
- cuda/cccl/headers/include/cub/agent/agent_merge.cuh +234 -0
- cuda/cccl/headers/include/cub/agent/agent_merge_sort.cuh +748 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_downsweep.cuh +786 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_histogram.cuh +286 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_onesweep.cuh +703 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_upsweep.cuh +555 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce.cuh +619 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce_by_key.cuh +806 -0
- cuda/cccl/headers/include/cub/agent/agent_rle.cuh +1124 -0
- cuda/cccl/headers/include/cub/agent/agent_scan.cuh +589 -0
- cuda/cccl/headers/include/cub/agent/agent_scan_by_key.cuh +474 -0
- cuda/cccl/headers/include/cub/agent/agent_segmented_radix_sort.cuh +289 -0
- cuda/cccl/headers/include/cub/agent/agent_select_if.cuh +1117 -0
- cuda/cccl/headers/include/cub/agent/agent_sub_warp_merge_sort.cuh +346 -0
- cuda/cccl/headers/include/cub/agent/agent_three_way_partition.cuh +606 -0
- cuda/cccl/headers/include/cub/agent/agent_topk.cuh +764 -0
- cuda/cccl/headers/include/cub/agent/agent_unique_by_key.cuh +631 -0
- cuda/cccl/headers/include/cub/agent/single_pass_scan_operators.cuh +1424 -0
- cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +963 -0
- cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +1227 -0
- cuda/cccl/headers/include/cub/block/block_exchange.cuh +1313 -0
- cuda/cccl/headers/include/cub/block/block_histogram.cuh +424 -0
- cuda/cccl/headers/include/cub/block/block_load.cuh +1264 -0
- cuda/cccl/headers/include/cub/block/block_load_to_shared.cuh +432 -0
- cuda/cccl/headers/include/cub/block/block_merge_sort.cuh +800 -0
- cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +1225 -0
- cuda/cccl/headers/include/cub/block/block_radix_sort.cuh +2196 -0
- cuda/cccl/headers/include/cub/block/block_raking_layout.cuh +150 -0
- cuda/cccl/headers/include/cub/block/block_reduce.cuh +667 -0
- cuda/cccl/headers/include/cub/block/block_run_length_decode.cuh +434 -0
- cuda/cccl/headers/include/cub/block/block_scan.cuh +2315 -0
- cuda/cccl/headers/include/cub/block/block_shuffle.cuh +346 -0
- cuda/cccl/headers/include/cub/block/block_store.cuh +1247 -0
- cuda/cccl/headers/include/cub/block/radix_rank_sort_operations.cuh +624 -0
- cuda/cccl/headers/include/cub/block/specializations/block_histogram_atomic.cuh +86 -0
- cuda/cccl/headers/include/cub/block/specializations/block_histogram_sort.cuh +240 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking.cuh +252 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking_commutative_only.cuh +238 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_warp_reductions.cuh +281 -0
- cuda/cccl/headers/include/cub/block/specializations/block_scan_raking.cuh +790 -0
- cuda/cccl/headers/include/cub/block/specializations/block_scan_warp_scans.cuh +538 -0
- cuda/cccl/headers/include/cub/config.cuh +53 -0
- cuda/cccl/headers/include/cub/cub.cuh +120 -0
- cuda/cccl/headers/include/cub/detail/array_utils.cuh +78 -0
- cuda/cccl/headers/include/cub/detail/choose_offset.cuh +161 -0
- cuda/cccl/headers/include/cub/detail/detect_cuda_runtime.cuh +74 -0
- cuda/cccl/headers/include/cub/detail/device_double_buffer.cuh +96 -0
- cuda/cccl/headers/include/cub/detail/device_memory_resource.cuh +62 -0
- cuda/cccl/headers/include/cub/detail/fast_modulo_division.cuh +253 -0
- cuda/cccl/headers/include/cub/detail/integer_utils.cuh +88 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_driver.cuh +142 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_runtime.cuh +100 -0
- cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +114 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/README.md +71 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/array.h +68 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/json.h +62 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/object.h +100 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/string.h +53 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/value.h +95 -0
- cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +63 -0
- cuda/cccl/headers/include/cub/detail/rfa.cuh +731 -0
- cuda/cccl/headers/include/cub/detail/strong_load.cuh +189 -0
- cuda/cccl/headers/include/cub/detail/strong_store.cuh +220 -0
- cuda/cccl/headers/include/cub/detail/temporary_storage.cuh +384 -0
- cuda/cccl/headers/include/cub/detail/type_traits.cuh +187 -0
- cuda/cccl/headers/include/cub/detail/uninitialized_copy.cuh +73 -0
- cuda/cccl/headers/include/cub/detail/unsafe_bitcast.cuh +56 -0
- cuda/cccl/headers/include/cub/device/device_adjacent_difference.cuh +596 -0
- cuda/cccl/headers/include/cub/device/device_copy.cuh +276 -0
- cuda/cccl/headers/include/cub/device/device_for.cuh +1063 -0
- cuda/cccl/headers/include/cub/device/device_histogram.cuh +1509 -0
- cuda/cccl/headers/include/cub/device/device_memcpy.cuh +195 -0
- cuda/cccl/headers/include/cub/device/device_merge.cuh +203 -0
- cuda/cccl/headers/include/cub/device/device_merge_sort.cuh +979 -0
- cuda/cccl/headers/include/cub/device/device_partition.cuh +668 -0
- cuda/cccl/headers/include/cub/device/device_radix_sort.cuh +3437 -0
- cuda/cccl/headers/include/cub/device/device_reduce.cuh +2518 -0
- cuda/cccl/headers/include/cub/device/device_run_length_encode.cuh +370 -0
- cuda/cccl/headers/include/cub/device/device_scan.cuh +2212 -0
- cuda/cccl/headers/include/cub/device/device_segmented_radix_sort.cuh +1496 -0
- cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +1430 -0
- cuda/cccl/headers/include/cub/device/device_segmented_sort.cuh +2811 -0
- cuda/cccl/headers/include/cub/device/device_select.cuh +1228 -0
- cuda/cccl/headers/include/cub/device/device_topk.cuh +511 -0
- cuda/cccl/headers/include/cub/device/device_transform.cuh +668 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_adjacent_difference.cuh +315 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_batch_memcpy.cuh +719 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_common.cuh +43 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_copy_mdspan.cuh +79 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_for.cuh +198 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_histogram.cuh +1046 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +303 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge_sort.cuh +473 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_radix_sort.cuh +1744 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +1310 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_by_key.cuh +655 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +531 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_nondeterministic.cuh +313 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_rle.cuh +615 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan.cuh +517 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan_by_key.cuh +602 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_segmented_sort.cuh +975 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_select_if.cuh +842 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce.cuh +341 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh +440 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_three_way_partition.cuh +389 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_topk.cuh +627 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +569 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_unique_by_key.cuh +545 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +261 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/histogram.cuh +505 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/merge_sort.cuh +334 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/radix_sort.cuh +803 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/reduce.cuh +583 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/scan.cuh +189 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_reduce.cuh +321 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_sort.cuh +522 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/three_way_partition.cuh +201 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +1028 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/unique_by_key.cuh +176 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh +67 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh +118 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_for.cuh +60 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_histogram.cuh +275 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge.cuh +76 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge_sort.cuh +126 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_radix_sort.cuh +1065 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce.cuh +493 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh +942 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_run_length_encode.cuh +673 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan.cuh +618 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan_by_key.cuh +1010 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_segmented_sort.cuh +398 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_select_if.cuh +1588 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_three_way_partition.cuh +440 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_topk.cuh +85 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +481 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_unique_by_key.cuh +884 -0
- cuda/cccl/headers/include/cub/grid/grid_even_share.cuh +227 -0
- cuda/cccl/headers/include/cub/grid/grid_mapping.cuh +106 -0
- cuda/cccl/headers/include/cub/grid/grid_queue.cuh +202 -0
- cuda/cccl/headers/include/cub/iterator/arg_index_input_iterator.cuh +254 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_input_iterator.cuh +259 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_output_iterator.cuh +250 -0
- cuda/cccl/headers/include/cub/iterator/tex_obj_input_iterator.cuh +320 -0
- cuda/cccl/headers/include/cub/thread/thread_load.cuh +349 -0
- cuda/cccl/headers/include/cub/thread/thread_operators.cuh +688 -0
- cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +548 -0
- cuda/cccl/headers/include/cub/thread/thread_scan.cuh +498 -0
- cuda/cccl/headers/include/cub/thread/thread_search.cuh +199 -0
- cuda/cccl/headers/include/cub/thread/thread_simd.cuh +458 -0
- cuda/cccl/headers/include/cub/thread/thread_sort.cuh +102 -0
- cuda/cccl/headers/include/cub/thread/thread_store.cuh +365 -0
- cuda/cccl/headers/include/cub/util_allocator.cuh +921 -0
- cuda/cccl/headers/include/cub/util_arch.cuh +167 -0
- cuda/cccl/headers/include/cub/util_cpp_dialect.cuh +95 -0
- cuda/cccl/headers/include/cub/util_debug.cuh +207 -0
- cuda/cccl/headers/include/cub/util_device.cuh +800 -0
- cuda/cccl/headers/include/cub/util_macro.cuh +97 -0
- cuda/cccl/headers/include/cub/util_math.cuh +118 -0
- cuda/cccl/headers/include/cub/util_namespace.cuh +176 -0
- cuda/cccl/headers/include/cub/util_policy_wrapper_t.cuh +55 -0
- cuda/cccl/headers/include/cub/util_ptx.cuh +513 -0
- cuda/cccl/headers/include/cub/util_temporary_storage.cuh +122 -0
- cuda/cccl/headers/include/cub/util_type.cuh +1120 -0
- cuda/cccl/headers/include/cub/util_vsmem.cuh +253 -0
- cuda/cccl/headers/include/cub/version.cuh +89 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_shfl.cuh +329 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_smem.cuh +177 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_shfl.cuh +737 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_smem.cuh +408 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_shfl.cuh +952 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_smem.cuh +715 -0
- cuda/cccl/headers/include/cub/warp/warp_exchange.cuh +405 -0
- cuda/cccl/headers/include/cub/warp/warp_load.cuh +614 -0
- cuda/cccl/headers/include/cub/warp/warp_merge_sort.cuh +169 -0
- cuda/cccl/headers/include/cub/warp/warp_reduce.cuh +829 -0
- cuda/cccl/headers/include/cub/warp/warp_scan.cuh +1890 -0
- cuda/cccl/headers/include/cub/warp/warp_store.cuh +521 -0
- cuda/cccl/headers/include/cub/warp/warp_utils.cuh +61 -0
- cuda/cccl/headers/include/cuda/__algorithm/common.h +68 -0
- cuda/cccl/headers/include/cuda/__algorithm/copy.h +196 -0
- cuda/cccl/headers/include/cuda/__algorithm/fill.h +107 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property.h +165 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property_encoding.h +172 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr.h +217 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr_base.h +100 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/apply_access_property.h +83 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/associate_access_property.h +128 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/createpolicy.h +210 -0
- cuda/cccl/headers/include/cuda/__atomic/atomic.h +145 -0
- cuda/cccl/headers/include/cuda/__barrier/async_contract_fulfillment.h +39 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier.h +65 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_arrive_tx.h +102 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +487 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_expect_tx.h +74 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_native_handle.h +45 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_thread_scope.h +60 -0
- cuda/cccl/headers/include/cuda/__bit/bit_reverse.h +171 -0
- cuda/cccl/headers/include/cuda/__bit/bitfield.h +122 -0
- cuda/cccl/headers/include/cuda/__bit/bitmask.h +90 -0
- cuda/cccl/headers/include/cuda/__cccl_config +37 -0
- cuda/cccl/headers/include/cuda/__cmath/ceil_div.h +124 -0
- cuda/cccl/headers/include/cuda/__cmath/fast_modulo_division.h +178 -0
- cuda/cccl/headers/include/cuda/__cmath/ilog.h +195 -0
- cuda/cccl/headers/include/cuda/__cmath/ipow.h +107 -0
- cuda/cccl/headers/include/cuda/__cmath/isqrt.h +80 -0
- cuda/cccl/headers/include/cuda/__cmath/mul_hi.h +146 -0
- cuda/cccl/headers/include/cuda/__cmath/neg.h +47 -0
- cuda/cccl/headers/include/cuda/__cmath/pow2.h +74 -0
- cuda/cccl/headers/include/cuda/__cmath/round_down.h +102 -0
- cuda/cccl/headers/include/cuda/__cmath/round_up.h +104 -0
- cuda/cccl/headers/include/cuda/__cmath/uabs.h +57 -0
- cuda/cccl/headers/include/cuda/__complex/complex.h +238 -0
- cuda/cccl/headers/include/cuda/__complex/get_real_imag.h +89 -0
- cuda/cccl/headers/include/cuda/__complex/traits.h +64 -0
- cuda/cccl/headers/include/cuda/__complex_ +28 -0
- cuda/cccl/headers/include/cuda/__device/all_devices.h +140 -0
- cuda/cccl/headers/include/cuda/__device/arch_id.h +176 -0
- cuda/cccl/headers/include/cuda/__device/arch_traits.h +537 -0
- cuda/cccl/headers/include/cuda/__device/attributes.h +772 -0
- cuda/cccl/headers/include/cuda/__device/compute_capability.h +171 -0
- cuda/cccl/headers/include/cuda/__device/device_ref.h +156 -0
- cuda/cccl/headers/include/cuda/__device/physical_device.h +172 -0
- cuda/cccl/headers/include/cuda/__driver/driver_api.h +835 -0
- cuda/cccl/headers/include/cuda/__event/event.h +171 -0
- cuda/cccl/headers/include/cuda/__event/event_ref.h +157 -0
- cuda/cccl/headers/include/cuda/__event/timed_event.h +120 -0
- cuda/cccl/headers/include/cuda/__execution/determinism.h +91 -0
- cuda/cccl/headers/include/cuda/__execution/output_ordering.h +89 -0
- cuda/cccl/headers/include/cuda/__execution/require.h +75 -0
- cuda/cccl/headers/include/cuda/__execution/tune.h +70 -0
- cuda/cccl/headers/include/cuda/__functional/address_stability.h +131 -0
- cuda/cccl/headers/include/cuda/__functional/for_each_canceled.h +321 -0
- cuda/cccl/headers/include/cuda/__functional/maximum.h +58 -0
- cuda/cccl/headers/include/cuda/__functional/minimum.h +58 -0
- cuda/cccl/headers/include/cuda/__functional/proclaim_return_type.h +108 -0
- cuda/cccl/headers/include/cuda/__fwd/barrier.h +38 -0
- cuda/cccl/headers/include/cuda/__fwd/barrier_native_handle.h +42 -0
- cuda/cccl/headers/include/cuda/__fwd/complex.h +48 -0
- cuda/cccl/headers/include/cuda/__fwd/devices.h +44 -0
- cuda/cccl/headers/include/cuda/__fwd/get_stream.h +38 -0
- cuda/cccl/headers/include/cuda/__fwd/pipeline.h +37 -0
- cuda/cccl/headers/include/cuda/__fwd/zip_iterator.h +58 -0
- cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +315 -0
- cuda/cccl/headers/include/cuda/__iterator/counting_iterator.h +483 -0
- cuda/cccl/headers/include/cuda/__iterator/discard_iterator.h +324 -0
- cuda/cccl/headers/include/cuda/__iterator/permutation_iterator.h +456 -0
- cuda/cccl/headers/include/cuda/__iterator/shuffle_iterator.h +334 -0
- cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +418 -0
- cuda/cccl/headers/include/cuda/__iterator/tabulate_output_iterator.h +367 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_input_output_iterator.h +528 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +527 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_output_iterator.h +486 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_common.h +148 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_function.h +112 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_iterator.h +557 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_transform_iterator.h +592 -0
- cuda/cccl/headers/include/cuda/__latch/latch.h +44 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +533 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +238 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +152 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +117 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/check_preconditions.h +79 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/completion_mechanism.h +47 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_bulk_shared_global.h +60 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_fallback.h +72 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_shared_global.h +148 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/dispatch_memcpy_async.h +165 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/is_local_smem_barrier.h +53 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async.h +179 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_barrier.h +99 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_tx.h +104 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_completion.h +170 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/try_get_barrier_handle.h +59 -0
- cuda/cccl/headers/include/cuda/__memory/address_space.h +227 -0
- cuda/cccl/headers/include/cuda/__memory/align_down.h +56 -0
- cuda/cccl/headers/include/cuda/__memory/align_up.h +56 -0
- cuda/cccl/headers/include/cuda/__memory/aligned_size.h +61 -0
- cuda/cccl/headers/include/cuda/__memory/check_address.h +111 -0
- cuda/cccl/headers/include/cuda/__memory/discard_memory.h +64 -0
- cuda/cccl/headers/include/cuda/__memory/get_device_address.h +58 -0
- cuda/cccl/headers/include/cuda/__memory/is_aligned.h +47 -0
- cuda/cccl/headers/include/cuda/__memory/ptr_in_range.h +93 -0
- cuda/cccl/headers/include/cuda/__memory/ptr_rebind.h +75 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +82 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_property.h +153 -0
- cuda/cccl/headers/include/cuda/__memory_resource/properties.h +113 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource.h +125 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +652 -0
- cuda/cccl/headers/include/cuda/__numeric/add_overflow.h +306 -0
- cuda/cccl/headers/include/cuda/__numeric/narrow.h +108 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_cast.h +59 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_result.h +43 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx.h +120 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2983 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/barrier_cluster.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/bfind.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/bmsk.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/clusterlaunchcontrol.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk.h +44 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_commit_group.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_tensor.h +45 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_wait_group.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_mbarrier_arrive.h +42 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk.h +60 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk_tensor.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/elect_sync.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/exit.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/fence.h +49 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/barrier_cluster.h +115 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bfind.h +190 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bmsk.h +54 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/clusterlaunchcontrol.h +242 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk.h +197 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_commit_group.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_multicast.h +54 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor.h +997 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_gather_scatter.h +318 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_multicast.h +671 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_wait_group.h +46 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive.h +26 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive_noinc.h +26 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk.h +1470 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_bf16.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_f16.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_tensor.h +601 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/elect_sync.h +36 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/exit.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence.h +208 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_mbarrier_init.h +31 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_alias.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async.h +58 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async_generic_sync_restrict.h +64 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_tensormap_generic.h +102 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_sync_restrict.h +64 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/get_sreg.h +949 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/getctarank.h +32 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/ld.h +5542 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive.h +399 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_expect_tx.h +184 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_no_complete.h +34 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_expect_tx.h +102 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_init.h +27 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait.h +143 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait_parity.h +144 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait.h +286 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait_parity.h +290 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_ld_reduce.h +2202 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_red.h +1362 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_st.h +236 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/prmt.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/red_async.h +460 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shl.h +96 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shr.h +168 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st.h +1490 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_async.h +123 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_bulk.h +31 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_alloc.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_commit.h +99 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_cp.h +765 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_fence.h +58 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_ld.h +4927 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma.h +4291 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma_ws.h +7110 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_shift.h +42 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_st.h +5063 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_wait.h +56 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_cp_fenceproxy.h +71 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_replace.h +1030 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/trap.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/get_sreg.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/getctarank.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/ld.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_arrive.h +45 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_expect_tx.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_init.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_wait.h +46 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_ld_reduce.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_red.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/prmt.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/red_async.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shfl_sync.h +244 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shl.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shr.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st_async.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st_bulk.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_alloc.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_commit.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_cp.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_fence.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_ld.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma_ws.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_shift.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_wait.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_cp_fenceproxy.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_replace.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/trap.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/pragmas/enable_smem_spilling.h +47 -0
- cuda/cccl/headers/include/cuda/__ptx/ptx_dot_variants.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/ptx_helper_functions.h +176 -0
- cuda/cccl/headers/include/cuda/__random/feistel_bijection.h +105 -0
- cuda/cccl/headers/include/cuda/__random/random_bijection.h +88 -0
- cuda/cccl/headers/include/cuda/__runtime/ensure_current_context.h +99 -0
- cuda/cccl/headers/include/cuda/__runtime/types.h +41 -0
- cuda/cccl/headers/include/cuda/__semaphore/counting_semaphore.h +53 -0
- cuda/cccl/headers/include/cuda/__stream/get_stream.h +110 -0
- cuda/cccl/headers/include/cuda/__stream/stream.h +141 -0
- cuda/cccl/headers/include/cuda/__stream/stream_ref.h +303 -0
- cuda/cccl/headers/include/cuda/__type_traits/is_floating_point.h +47 -0
- cuda/cccl/headers/include/cuda/__type_traits/is_specialization_of.h +37 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/access.h +88 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/any_cast.h +83 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_base.h +148 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_from.h +96 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_fwd.h +128 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_ptr.h +304 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_ref.h +337 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_value.h +590 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/conversions.h +169 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/dynamic_any_cast.h +107 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/interfaces.h +359 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/iset.h +142 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/overrides.h +64 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/rtti.h +257 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/semiregular.h +322 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/storage.h +79 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/tagged_ptr.h +58 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtcall.h +162 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_functions.h +184 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_ptrs.h +80 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_tables.h +155 -0
- cuda/cccl/headers/include/cuda/__utility/basic_any.h +507 -0
- cuda/cccl/headers/include/cuda/__utility/immovable.h +50 -0
- cuda/cccl/headers/include/cuda/__utility/in_range.h +65 -0
- cuda/cccl/headers/include/cuda/__utility/inherit.h +36 -0
- cuda/cccl/headers/include/cuda/__utility/no_init.h +29 -0
- cuda/cccl/headers/include/cuda/__utility/static_for.h +79 -0
- cuda/cccl/headers/include/cuda/__warp/lane_mask.h +326 -0
- cuda/cccl/headers/include/cuda/__warp/warp_match_all.h +65 -0
- cuda/cccl/headers/include/cuda/__warp/warp_shuffle.h +251 -0
- cuda/cccl/headers/include/cuda/access_property +26 -0
- cuda/cccl/headers/include/cuda/algorithm +27 -0
- cuda/cccl/headers/include/cuda/annotated_ptr +29 -0
- cuda/cccl/headers/include/cuda/atomic +27 -0
- cuda/cccl/headers/include/cuda/barrier +267 -0
- cuda/cccl/headers/include/cuda/bit +29 -0
- cuda/cccl/headers/include/cuda/cmath +37 -0
- cuda/cccl/headers/include/cuda/devices +33 -0
- cuda/cccl/headers/include/cuda/discard_memory +32 -0
- cuda/cccl/headers/include/cuda/functional +32 -0
- cuda/cccl/headers/include/cuda/iterator +39 -0
- cuda/cccl/headers/include/cuda/latch +27 -0
- cuda/cccl/headers/include/cuda/mdspan +28 -0
- cuda/cccl/headers/include/cuda/memory +35 -0
- cuda/cccl/headers/include/cuda/memory_resource +35 -0
- cuda/cccl/headers/include/cuda/numeric +29 -0
- cuda/cccl/headers/include/cuda/pipeline +579 -0
- cuda/cccl/headers/include/cuda/ptx +129 -0
- cuda/cccl/headers/include/cuda/semaphore +31 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/adjacent_find.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/all_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/any_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/binary_search.h +53 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/clamp.h +48 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp.h +58 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp_ref_type.h +85 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy.h +142 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_backward.h +80 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_if.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_n.h +73 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/count.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/count_if.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/equal.h +128 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/equal_range.h +101 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/fill.h +58 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/fill_n.h +51 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_end.h +225 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_first_of.h +73 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_if.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_if_not.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/for_each.h +42 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/for_each_n.h +48 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/generate.h +41 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/generate_n.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/half_positive.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/in_fun_result.h +55 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/includes.h +90 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap.h +50 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap_until.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_partitioned.h +57 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_permutation.h +252 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted_until.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iter_swap.h +82 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iterator_operations.h +185 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lexicographical_compare.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +82 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_heap.h +70 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max_element.h +67 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/merge.h +89 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/min.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/min_element.h +87 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax.h +66 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +139 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/mismatch.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move.h +86 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move_backward.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/next_permutation.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/none_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort.h +102 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort_copy.h +122 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition.h +120 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition_copy.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition_point.h +61 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/pop_heap.h +93 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/prev_permutation.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/push_heap.h +100 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_for_each.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_for_each_n.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_iterator_concept.h +65 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min.h +98 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min_element.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove.h +55 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy_if.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_if.h +56 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy.h +54 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy_if.h +50 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_if.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/reverse.h +81 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/reverse_copy.h +43 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/rotate.h +261 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/rotate_copy.h +40 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/search.h +185 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/search_n.h +163 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_difference.h +95 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_intersection.h +122 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_symmetric_difference.h +134 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_union.h +128 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/shift_left.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/shift_right.h +144 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/sift_down.h +139 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/sort_heap.h +70 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/swap_ranges.h +78 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/transform.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unique.h +76 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unique_copy.h +155 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_iter.h +95 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_range.h +126 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/upper_bound.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm_ +26 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/common.h +192 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/owned.h +136 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/reference.h +118 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/common.h +58 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_local.h +208 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_derived.h +401 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated.h +3971 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated_helper.h +177 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/host.h +211 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions.h +33 -0
- cuda/cccl/headers/include/cuda/std/__atomic/order.h +159 -0
- cuda/cccl/headers/include/cuda/std/__atomic/platform/msvc_to_builtins.h +654 -0
- cuda/cccl/headers/include/cuda/std/__atomic/platform.h +93 -0
- cuda/cccl/headers/include/cuda/std/__atomic/scopes.h +105 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/base.h +249 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/common.h +104 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/locked.h +225 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/reference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/small.h +228 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types.h +52 -0
- cuda/cccl/headers/include/cuda/std/__atomic/wait/notify_wait.h +95 -0
- cuda/cccl/headers/include/cuda/std/__atomic/wait/polling.h +65 -0
- cuda/cccl/headers/include/cuda/std/__barrier/barrier.h +227 -0
- cuda/cccl/headers/include/cuda/std/__barrier/empty_completion.h +37 -0
- cuda/cccl/headers/include/cuda/std/__barrier/poll_tester.h +82 -0
- cuda/cccl/headers/include/cuda/std/__bit/bit_cast.h +76 -0
- cuda/cccl/headers/include/cuda/std/__bit/byteswap.h +185 -0
- cuda/cccl/headers/include/cuda/std/__bit/countl.h +174 -0
- cuda/cccl/headers/include/cuda/std/__bit/countr.h +185 -0
- cuda/cccl/headers/include/cuda/std/__bit/endian.h +39 -0
- cuda/cccl/headers/include/cuda/std/__bit/has_single_bit.h +43 -0
- cuda/cccl/headers/include/cuda/std/__bit/integral.h +126 -0
- cuda/cccl/headers/include/cuda/std/__bit/popcount.h +154 -0
- cuda/cccl/headers/include/cuda/std/__bit/reference.h +1272 -0
- cuda/cccl/headers/include/cuda/std/__bit/rotate.h +94 -0
- cuda/cccl/headers/include/cuda/std/__cccl/algorithm_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/architecture.h +78 -0
- cuda/cccl/headers/include/cuda/std/__cccl/assert.h +161 -0
- cuda/cccl/headers/include/cuda/std/__cccl/attributes.h +206 -0
- cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +673 -0
- cuda/cccl/headers/include/cuda/std/__cccl/compiler.h +217 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_capabilities.h +51 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_toolkit.h +56 -0
- cuda/cccl/headers/include/cuda/std/__cccl/deprecated.h +88 -0
- cuda/cccl/headers/include/cuda/std/__cccl/diagnostic.h +131 -0
- cuda/cccl/headers/include/cuda/std/__cccl/dialect.h +123 -0
- cuda/cccl/headers/include/cuda/std/__cccl/epilogue.h +344 -0
- cuda/cccl/headers/include/cuda/std/__cccl/exceptions.h +91 -0
- cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +74 -0
- cuda/cccl/headers/include/cuda/std/__cccl/extended_data_types.h +160 -0
- cuda/cccl/headers/include/cuda/std/__cccl/host_std_lib.h +52 -0
- cuda/cccl/headers/include/cuda/std/__cccl/is_non_narrowing_convertible.h +73 -0
- cuda/cccl/headers/include/cuda/std/__cccl/memory_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/numeric_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/os.h +54 -0
- cuda/cccl/headers/include/cuda/std/__cccl/preprocessor.h +1286 -0
- cuda/cccl/headers/include/cuda/std/__cccl/prologue.h +281 -0
- cuda/cccl/headers/include/cuda/std/__cccl/ptx_isa.h +253 -0
- cuda/cccl/headers/include/cuda/std/__cccl/rtti.h +72 -0
- cuda/cccl/headers/include/cuda/std/__cccl/sequence_access.h +87 -0
- cuda/cccl/headers/include/cuda/std/__cccl/system_header.h +38 -0
- cuda/cccl/headers/include/cuda/std/__cccl/unreachable.h +31 -0
- cuda/cccl/headers/include/cuda/std/__cccl/version.h +26 -0
- cuda/cccl/headers/include/cuda/std/__cccl/visibility.h +171 -0
- cuda/cccl/headers/include/cuda/std/__charconv/chars_format.h +81 -0
- cuda/cccl/headers/include/cuda/std/__charconv/from_chars.h +154 -0
- cuda/cccl/headers/include/cuda/std/__charconv/from_chars_result.h +56 -0
- cuda/cccl/headers/include/cuda/std/__charconv/to_chars.h +148 -0
- cuda/cccl/headers/include/cuda/std/__charconv/to_chars_result.h +56 -0
- cuda/cccl/headers/include/cuda/std/__charconv_ +31 -0
- cuda/cccl/headers/include/cuda/std/__chrono/calendar.h +54 -0
- cuda/cccl/headers/include/cuda/std/__chrono/day.h +162 -0
- cuda/cccl/headers/include/cuda/std/__chrono/duration.h +503 -0
- cuda/cccl/headers/include/cuda/std/__chrono/file_clock.h +55 -0
- cuda/cccl/headers/include/cuda/std/__chrono/high_resolution_clock.h +46 -0
- cuda/cccl/headers/include/cuda/std/__chrono/month.h +187 -0
- cuda/cccl/headers/include/cuda/std/__chrono/steady_clock.h +60 -0
- cuda/cccl/headers/include/cuda/std/__chrono/system_clock.h +80 -0
- cuda/cccl/headers/include/cuda/std/__chrono/time_point.h +259 -0
- cuda/cccl/headers/include/cuda/std/__chrono/year.h +186 -0
- cuda/cccl/headers/include/cuda/std/__cmath/abs.h +127 -0
- cuda/cccl/headers/include/cuda/std/__cmath/copysign.h +88 -0
- cuda/cccl/headers/include/cuda/std/__cmath/error_functions.h +200 -0
- cuda/cccl/headers/include/cuda/std/__cmath/exponential_functions.h +784 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fdim.h +118 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fma.h +125 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fpclassify.h +231 -0
- cuda/cccl/headers/include/cuda/std/__cmath/gamma.h +205 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hyperbolic_functions.h +286 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hypot.h +221 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_hyperbolic_functions.h +286 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_trigonometric_functions.h +371 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isfinite.h +167 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isinf.h +205 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +186 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnormal.h +138 -0
- cuda/cccl/headers/include/cuda/std/__cmath/lerp.h +101 -0
- cuda/cccl/headers/include/cuda/std/__cmath/logarithms.h +534 -0
- cuda/cccl/headers/include/cuda/std/__cmath/min_max.h +287 -0
- cuda/cccl/headers/include/cuda/std/__cmath/modulo.h +208 -0
- cuda/cccl/headers/include/cuda/std/__cmath/nan.h +54 -0
- cuda/cccl/headers/include/cuda/std/__cmath/remainder.h +206 -0
- cuda/cccl/headers/include/cuda/std/__cmath/roots.h +199 -0
- cuda/cccl/headers/include/cuda/std/__cmath/rounding_functions.h +984 -0
- cuda/cccl/headers/include/cuda/std/__cmath/signbit.h +56 -0
- cuda/cccl/headers/include/cuda/std/__cmath/traits.h +238 -0
- cuda/cccl/headers/include/cuda/std/__cmath/trigonometric_functions.h +328 -0
- cuda/cccl/headers/include/cuda/std/__complex/arg.h +84 -0
- cuda/cccl/headers/include/cuda/std/__complex/complex.h +669 -0
- cuda/cccl/headers/include/cuda/std/__complex/exponential_functions.h +411 -0
- cuda/cccl/headers/include/cuda/std/__complex/hyperbolic_functions.h +117 -0
- cuda/cccl/headers/include/cuda/std/__complex/inverse_hyperbolic_functions.h +216 -0
- cuda/cccl/headers/include/cuda/std/__complex/inverse_trigonometric_functions.h +131 -0
- cuda/cccl/headers/include/cuda/std/__complex/literals.h +86 -0
- cuda/cccl/headers/include/cuda/std/__complex/logarithms.h +303 -0
- cuda/cccl/headers/include/cuda/std/__complex/math.h +159 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +323 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +322 -0
- cuda/cccl/headers/include/cuda/std/__complex/roots.h +214 -0
- cuda/cccl/headers/include/cuda/std/__complex/trigonometric_functions.h +61 -0
- cuda/cccl/headers/include/cuda/std/__complex/tuple.h +107 -0
- cuda/cccl/headers/include/cuda/std/__complex/vector_support.h +130 -0
- cuda/cccl/headers/include/cuda/std/__concepts/arithmetic.h +56 -0
- cuda/cccl/headers/include/cuda/std/__concepts/assignable.h +64 -0
- cuda/cccl/headers/include/cuda/std/__concepts/boolean_testable.h +63 -0
- cuda/cccl/headers/include/cuda/std/__concepts/class_or_enum.h +45 -0
- cuda/cccl/headers/include/cuda/std/__concepts/common_reference_with.h +69 -0
- cuda/cccl/headers/include/cuda/std/__concepts/common_with.h +82 -0
- cuda/cccl/headers/include/cuda/std/__concepts/concept_macros.h +341 -0
- cuda/cccl/headers/include/cuda/std/__concepts/constructible.h +174 -0
- cuda/cccl/headers/include/cuda/std/__concepts/convertible_to.h +70 -0
- cuda/cccl/headers/include/cuda/std/__concepts/copyable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__concepts/derived_from.h +56 -0
- cuda/cccl/headers/include/cuda/std/__concepts/destructible.h +76 -0
- cuda/cccl/headers/include/cuda/std/__concepts/different_from.h +38 -0
- cuda/cccl/headers/include/cuda/std/__concepts/equality_comparable.h +100 -0
- cuda/cccl/headers/include/cuda/std/__concepts/invocable.h +80 -0
- cuda/cccl/headers/include/cuda/std/__concepts/movable.h +58 -0
- cuda/cccl/headers/include/cuda/std/__concepts/predicate.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/regular.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/relation.h +77 -0
- cuda/cccl/headers/include/cuda/std/__concepts/same_as.h +39 -0
- cuda/cccl/headers/include/cuda/std/__concepts/semiregular.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/swappable.h +206 -0
- cuda/cccl/headers/include/cuda/std/__concepts/totally_ordered.h +101 -0
- cuda/cccl/headers/include/cuda/std/__cstddef/byte.h +113 -0
- cuda/cccl/headers/include/cuda/std/__cstddef/types.h +52 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/abs.h +57 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/aligned_alloc.h +66 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/div.h +96 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/malloc.h +70 -0
- cuda/cccl/headers/include/cuda/std/__cstring/memcpy.h +61 -0
- cuda/cccl/headers/include/cuda/std/__cstring/memset.h +46 -0
- cuda/cccl/headers/include/cuda/std/__cuda/api_wrapper.h +62 -0
- cuda/cccl/headers/include/cuda/std/__exception/cuda_error.h +139 -0
- cuda/cccl/headers/include/cuda/std/__exception/terminate.h +73 -0
- cuda/cccl/headers/include/cuda/std/__execution/env.h +455 -0
- cuda/cccl/headers/include/cuda/std/__execution/policy.h +88 -0
- cuda/cccl/headers/include/cuda/std/__expected/bad_expected_access.h +127 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected.h +1941 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected_base.h +1050 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpect.h +37 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpected.h +165 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/arithmetic.h +56 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cast.h +812 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cccl_fp.h +125 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/common_type.h +48 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/constants.h +376 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/conversion_rank_order.h +124 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cuda_fp_types.h +116 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/decompose.h +69 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/format.h +162 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/fp.h +40 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/mask.h +78 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/native_type.h +81 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/overflow_handler.h +139 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/properties.h +229 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/storage.h +248 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/traits.h +172 -0
- cuda/cccl/headers/include/cuda/std/__format/buffer.h +48 -0
- cuda/cccl/headers/include/cuda/std/__format/concepts.h +69 -0
- cuda/cccl/headers/include/cuda/std/__format/format_arg.h +282 -0
- cuda/cccl/headers/include/cuda/std/__format/format_arg_store.h +279 -0
- cuda/cccl/headers/include/cuda/std/__format/format_args.h +122 -0
- cuda/cccl/headers/include/cuda/std/__format/format_context.h +92 -0
- cuda/cccl/headers/include/cuda/std/__format/format_error.h +76 -0
- cuda/cccl/headers/include/cuda/std/__format/format_integral.h +237 -0
- cuda/cccl/headers/include/cuda/std/__format/format_parse_context.h +124 -0
- cuda/cccl/headers/include/cuda/std/__format/format_spec_parser.h +1230 -0
- cuda/cccl/headers/include/cuda/std/__format/formatter.h +59 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/bool.h +101 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/char.h +124 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/fp.h +101 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/int.h +174 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/ptr.h +104 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/str.h +178 -0
- cuda/cccl/headers/include/cuda/std/__format/output_utils.h +272 -0
- cuda/cccl/headers/include/cuda/std/__format/parse_arg_id.h +138 -0
- cuda/cccl/headers/include/cuda/std/__format_ +45 -0
- cuda/cccl/headers/include/cuda/std/__functional/binary_function.h +63 -0
- cuda/cccl/headers/include/cuda/std/__functional/binary_negate.h +65 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind.h +334 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_back.h +80 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_front.h +73 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder1st.h +74 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder2nd.h +74 -0
- cuda/cccl/headers/include/cuda/std/__functional/compose.h +68 -0
- cuda/cccl/headers/include/cuda/std/__functional/default_searcher.h +75 -0
- cuda/cccl/headers/include/cuda/std/__functional/function.h +1275 -0
- cuda/cccl/headers/include/cuda/std/__functional/hash.h +649 -0
- cuda/cccl/headers/include/cuda/std/__functional/identity.h +57 -0
- cuda/cccl/headers/include/cuda/std/__functional/invoke.h +296 -0
- cuda/cccl/headers/include/cuda/std/__functional/is_transparent.h +41 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +66 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fun_ref.h +211 -0
- cuda/cccl/headers/include/cuda/std/__functional/not_fn.h +120 -0
- cuda/cccl/headers/include/cuda/std/__functional/operations.h +534 -0
- cuda/cccl/headers/include/cuda/std/__functional/perfect_forward.h +128 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_binary_function.h +64 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_unary_function.h +63 -0
- cuda/cccl/headers/include/cuda/std/__functional/ranges_operations.h +113 -0
- cuda/cccl/headers/include/cuda/std/__functional/reference_wrapper.h +113 -0
- cuda/cccl/headers/include/cuda/std/__functional/unary_function.h +62 -0
- cuda/cccl/headers/include/cuda/std/__functional/unary_negate.h +65 -0
- cuda/cccl/headers/include/cuda/std/__functional/unwrap_ref.h +56 -0
- cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +262 -0
- cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +53 -0
- cuda/cccl/headers/include/cuda/std/__fwd/array.h +42 -0
- cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +74 -0
- cuda/cccl/headers/include/cuda/std/__fwd/complex.h +75 -0
- cuda/cccl/headers/include/cuda/std/__fwd/expected.h +46 -0
- cuda/cccl/headers/include/cuda/std/__fwd/format.h +84 -0
- cuda/cccl/headers/include/cuda/std/__fwd/fp.h +37 -0
- cuda/cccl/headers/include/cuda/std/__fwd/get.h +123 -0
- cuda/cccl/headers/include/cuda/std/__fwd/hash.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/iterator.h +43 -0
- cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +122 -0
- cuda/cccl/headers/include/cuda/std/__fwd/memory_resource.h +37 -0
- cuda/cccl/headers/include/cuda/std/__fwd/optional.h +39 -0
- cuda/cccl/headers/include/cuda/std/__fwd/pair.h +47 -0
- cuda/cccl/headers/include/cuda/std/__fwd/reference_wrapper.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/span.h +45 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string.h +112 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +91 -0
- cuda/cccl/headers/include/cuda/std/__fwd/subrange.h +55 -0
- cuda/cccl/headers/include/cuda/std/__fwd/tuple.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/unexpected.h +40 -0
- cuda/cccl/headers/include/cuda/std/__internal/cpp_dialect.h +44 -0
- cuda/cccl/headers/include/cuda/std/__internal/features.h +72 -0
- cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +143 -0
- cuda/cccl/headers/include/cuda/std/__iterator/access.h +128 -0
- cuda/cccl/headers/include/cuda/std/__iterator/advance.h +228 -0
- cuda/cccl/headers/include/cuda/std/__iterator/back_insert_iterator.h +163 -0
- cuda/cccl/headers/include/cuda/std/__iterator/bounded_iter.h +253 -0
- cuda/cccl/headers/include/cuda/std/__iterator/concepts.h +645 -0
- cuda/cccl/headers/include/cuda/std/__iterator/counted_iterator.h +464 -0
- cuda/cccl/headers/include/cuda/std/__iterator/data.h +61 -0
- cuda/cccl/headers/include/cuda/std/__iterator/default_sentinel.h +36 -0
- cuda/cccl/headers/include/cuda/std/__iterator/distance.h +126 -0
- cuda/cccl/headers/include/cuda/std/__iterator/empty.h +53 -0
- cuda/cccl/headers/include/cuda/std/__iterator/erase_if_container.h +53 -0
- cuda/cccl/headers/include/cuda/std/__iterator/front_insert_iterator.h +99 -0
- cuda/cccl/headers/include/cuda/std/__iterator/incrementable_traits.h +143 -0
- cuda/cccl/headers/include/cuda/std/__iterator/indirectly_comparable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__iterator/insert_iterator.h +107 -0
- cuda/cccl/headers/include/cuda/std/__iterator/istream_iterator.h +146 -0
- cuda/cccl/headers/include/cuda/std/__iterator/istreambuf_iterator.h +161 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iter_move.h +161 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iter_swap.h +163 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iterator.h +44 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iterator_traits.h +847 -0
- cuda/cccl/headers/include/cuda/std/__iterator/mergeable.h +72 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_iterator.h +432 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_sentinel.h +73 -0
- cuda/cccl/headers/include/cuda/std/__iterator/next.h +101 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostream_iterator.h +95 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostreambuf_iterator.h +100 -0
- cuda/cccl/headers/include/cuda/std/__iterator/permutable.h +54 -0
- cuda/cccl/headers/include/cuda/std/__iterator/prev.h +90 -0
- cuda/cccl/headers/include/cuda/std/__iterator/projected.h +61 -0
- cuda/cccl/headers/include/cuda/std/__iterator/readable_traits.h +156 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_access.h +142 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_iterator.h +371 -0
- cuda/cccl/headers/include/cuda/std/__iterator/size.h +69 -0
- cuda/cccl/headers/include/cuda/std/__iterator/sortable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__iterator/unreachable_sentinel.h +84 -0
- cuda/cccl/headers/include/cuda/std/__iterator/wrap_iter.h +245 -0
- cuda/cccl/headers/include/cuda/std/__latch/latch.h +88 -0
- cuda/cccl/headers/include/cuda/std/__limits/numeric_limits.h +617 -0
- cuda/cccl/headers/include/cuda/std/__limits/numeric_limits_ext.h +753 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conj_if_needed.h +78 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugate_transposed.h +54 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugated.h +139 -0
- cuda/cccl/headers/include/cuda/std/__linalg/scaled.h +132 -0
- cuda/cccl/headers/include/cuda/std/__linalg/transposed.h +321 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/aligned_accessor.h +97 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/concepts.h +139 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/default_accessor.h +73 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/empty_base.h +352 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +759 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_left.h +314 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_right.h +307 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_stride.h +605 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/mdspan.h +512 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_extents.h +193 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_helper.h +189 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_mapping.h +344 -0
- cuda/cccl/headers/include/cuda/std/__memory/addressof.h +67 -0
- cuda/cccl/headers/include/cuda/std/__memory/align.h +67 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocate_at_least.h +81 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocation_guard.h +100 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator.h +320 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_arg_t.h +84 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_destructor.h +59 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_traits.h +525 -0
- cuda/cccl/headers/include/cuda/std/__memory/assume_aligned.h +60 -0
- cuda/cccl/headers/include/cuda/std/__memory/builtin_new_allocator.h +87 -0
- cuda/cccl/headers/include/cuda/std/__memory/compressed_pair.h +225 -0
- cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +246 -0
- cuda/cccl/headers/include/cuda/std/__memory/destruct_n.h +91 -0
- cuda/cccl/headers/include/cuda/std/__memory/is_sufficiently_aligned.h +46 -0
- cuda/cccl/headers/include/cuda/std/__memory/pointer_traits.h +246 -0
- cuda/cccl/headers/include/cuda/std/__memory/runtime_assume_aligned.h +62 -0
- cuda/cccl/headers/include/cuda/std/__memory/temporary_buffer.h +92 -0
- cuda/cccl/headers/include/cuda/std/__memory/uninitialized_algorithms.h +678 -0
- cuda/cccl/headers/include/cuda/std/__memory/unique_ptr.h +765 -0
- cuda/cccl/headers/include/cuda/std/__memory/uses_allocator.h +54 -0
- cuda/cccl/headers/include/cuda/std/__memory/voidify.h +41 -0
- cuda/cccl/headers/include/cuda/std/__memory_ +34 -0
- cuda/cccl/headers/include/cuda/std/__new/allocate.h +126 -0
- cuda/cccl/headers/include/cuda/std/__new/bad_alloc.h +57 -0
- cuda/cccl/headers/include/cuda/std/__new/launder.h +53 -0
- cuda/cccl/headers/include/cuda/std/__new_ +29 -0
- cuda/cccl/headers/include/cuda/std/__numeric/accumulate.h +56 -0
- cuda/cccl/headers/include/cuda/std/__numeric/adjacent_difference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__numeric/exclusive_scan.h +66 -0
- cuda/cccl/headers/include/cuda/std/__numeric/gcd_lcm.h +78 -0
- cuda/cccl/headers/include/cuda/std/__numeric/inclusive_scan.h +73 -0
- cuda/cccl/headers/include/cuda/std/__numeric/inner_product.h +62 -0
- cuda/cccl/headers/include/cuda/std/__numeric/iota.h +42 -0
- cuda/cccl/headers/include/cuda/std/__numeric/midpoint.h +97 -0
- cuda/cccl/headers/include/cuda/std/__numeric/partial_sum.h +69 -0
- cuda/cccl/headers/include/cuda/std/__numeric/reduce.h +60 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_exclusive_scan.h +51 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_inclusive_scan.h +65 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_reduce.h +72 -0
- cuda/cccl/headers/include/cuda/std/__optional/bad_optional_access.h +74 -0
- cuda/cccl/headers/include/cuda/std/__optional/hash.h +53 -0
- cuda/cccl/headers/include/cuda/std/__optional/make_optional.h +61 -0
- cuda/cccl/headers/include/cuda/std/__optional/nullopt.h +43 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional.h +859 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional_base.h +433 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional_ref.h +324 -0
- cuda/cccl/headers/include/cuda/std/__random/generate_canonical.h +56 -0
- cuda/cccl/headers/include/cuda/std/__random/is_seed_sequence.h +39 -0
- cuda/cccl/headers/include/cuda/std/__random/is_valid.h +106 -0
- cuda/cccl/headers/include/cuda/std/__random/linear_congruential_engine.h +398 -0
- cuda/cccl/headers/include/cuda/std/__random/uniform_int_distribution.h +335 -0
- cuda/cccl/headers/include/cuda/std/__random/uniform_real_distribution.h +183 -0
- cuda/cccl/headers/include/cuda/std/__random_ +29 -0
- cuda/cccl/headers/include/cuda/std/__ranges/access.h +303 -0
- cuda/cccl/headers/include/cuda/std/__ranges/all.h +98 -0
- cuda/cccl/headers/include/cuda/std/__ranges/compressed_movable_box.h +892 -0
- cuda/cccl/headers/include/cuda/std/__ranges/concepts.h +302 -0
- cuda/cccl/headers/include/cuda/std/__ranges/counted.h +90 -0
- cuda/cccl/headers/include/cuda/std/__ranges/dangling.h +54 -0
- cuda/cccl/headers/include/cuda/std/__ranges/data.h +136 -0
- cuda/cccl/headers/include/cuda/std/__ranges/empty.h +109 -0
- cuda/cccl/headers/include/cuda/std/__ranges/empty_view.h +77 -0
- cuda/cccl/headers/include/cuda/std/__ranges/enable_borrowed_range.h +41 -0
- cuda/cccl/headers/include/cuda/std/__ranges/enable_view.h +78 -0
- cuda/cccl/headers/include/cuda/std/__ranges/from_range.h +36 -0
- cuda/cccl/headers/include/cuda/std/__ranges/iota_view.h +266 -0
- cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +410 -0
- cuda/cccl/headers/include/cuda/std/__ranges/owning_view.h +162 -0
- cuda/cccl/headers/include/cuda/std/__ranges/range_adaptor.h +110 -0
- cuda/cccl/headers/include/cuda/std/__ranges/rbegin.h +175 -0
- cuda/cccl/headers/include/cuda/std/__ranges/ref_view.h +121 -0
- cuda/cccl/headers/include/cuda/std/__ranges/rend.h +182 -0
- cuda/cccl/headers/include/cuda/std/__ranges/repeat_view.h +345 -0
- cuda/cccl/headers/include/cuda/std/__ranges/single_view.h +155 -0
- cuda/cccl/headers/include/cuda/std/__ranges/size.h +201 -0
- cuda/cccl/headers/include/cuda/std/__ranges/subrange.h +513 -0
- cuda/cccl/headers/include/cuda/std/__ranges/take_view.h +476 -0
- cuda/cccl/headers/include/cuda/std/__ranges/take_while_view.h +259 -0
- cuda/cccl/headers/include/cuda/std/__ranges/transform_view.h +522 -0
- cuda/cccl/headers/include/cuda/std/__ranges/unwrap_end.h +53 -0
- cuda/cccl/headers/include/cuda/std/__ranges/view_interface.h +183 -0
- cuda/cccl/headers/include/cuda/std/__ranges/views.h +38 -0
- cuda/cccl/headers/include/cuda/std/__semaphore/atomic_semaphore.h +234 -0
- cuda/cccl/headers/include/cuda/std/__semaphore/counting_semaphore.h +51 -0
- cuda/cccl/headers/include/cuda/std/__string/char_traits.h +191 -0
- cuda/cccl/headers/include/cuda/std/__string/constexpr_c_functions.h +581 -0
- cuda/cccl/headers/include/cuda/std/__string/helper_functions.h +296 -0
- cuda/cccl/headers/include/cuda/std/__string/string_view.h +244 -0
- cuda/cccl/headers/include/cuda/std/__string_ +29 -0
- cuda/cccl/headers/include/cuda/std/__system_error/errc.h +51 -0
- cuda/cccl/headers/include/cuda/std/__system_error_ +26 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support.h +106 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_cuda.h +47 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_external.h +41 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_pthread.h +143 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_win32.h +87 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/ignore.h +51 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/make_tuple_types.h +120 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/sfinae_helpers.h +260 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/structured_bindings.h +212 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_element.h +70 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_indices.h +44 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like.h +84 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like_ext.h +68 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_size.h +79 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_types.h +35 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/vector_types.h +290 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_const.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_cv.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_lvalue_reference.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_pointer.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_rvalue_reference.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_volatile.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/aligned_storage.h +149 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/aligned_union.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/alignment_of.h +41 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/always_false.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/can_extract_key.h +68 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/common_reference.h +262 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/common_type.h +173 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/conditional.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/conjunction.h +67 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/copy_cv.h +50 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/copy_cvref.h +148 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/decay.h +83 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/dependent_type.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/disjunction.h +77 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/enable_if.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/extent.h +68 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/fold.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/has_unique_object_representation.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/has_virtual_destructor.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/integral_constant.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_abstract.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_aggregate.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_allocator.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_arithmetic.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_array.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_assignable.h +78 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_base_of.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_bounded_array.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_callable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_char_like_type.h +38 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_class.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_compound.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_const.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_constant_evaluated.h +51 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_constructible.h +174 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_convertible.h +211 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_core_convertible.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_corresponding_member.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_default_constructible.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_destructible.h +115 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_empty.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_enum.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_execution_policy.h +81 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_arithmetic.h +38 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_floating_point.h +79 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_final.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_floating_point.h +53 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_function.h +61 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_fundamental.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_implicitly_default_constructible.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_integer.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_integral.h +123 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_layout_compatible.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_literal_type.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_function_pointer.h +79 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_object_pointer.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_pointer.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_move_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_move_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_assignable.h +70 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_constructible.h +84 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_convertible.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_default_constructible.h +54 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_destructible.h +82 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_null_pointer.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_object.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_one_of.h +37 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pod.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_base_of.h +84 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_with_class.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_polymorphic.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +121 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_reference.h +95 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_reference_wrapper.h +50 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_referenceable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_same.h +88 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_scalar.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_scoped_enum.h +49 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_signed.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_signed_integer.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_standard_layout.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_swappable.h +202 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivial.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_assignable.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_constructible.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copyable.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_default_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_destructible.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_assignable.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_constructible.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unbounded_array.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_union.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned.h +66 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned_integer.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_valid_expansion.h +41 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_void.h +55 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_volatile.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/lazy.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_const_lvalue_ref.h +36 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_nbit_int.h +107 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_signed.h +140 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_unsigned.h +151 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/maybe_const.h +36 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/nat.h +39 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/negation.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/num_bits.h +122 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/promote.h +163 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/rank.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/reference_constructs_from_temporary.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/reference_converts_from_temporary.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_all_extents.h +66 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_const.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_const_ref.h +37 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_cv.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_cvref.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_extent.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_pointer.h +73 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_reference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_volatile.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/result_of.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_identity.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_list.h +1067 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_set.h +131 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/underlying_type.h +52 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/void_t.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/as_const.h +52 -0
- cuda/cccl/headers/include/cuda/std/__utility/auto_cast.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/cmp.h +116 -0
- cuda/cccl/headers/include/cuda/std/__utility/convert_to_integral.h +101 -0
- cuda/cccl/headers/include/cuda/std/__utility/declval.h +76 -0
- cuda/cccl/headers/include/cuda/std/__utility/exception_guard.h +161 -0
- cuda/cccl/headers/include/cuda/std/__utility/exchange.h +46 -0
- cuda/cccl/headers/include/cuda/std/__utility/forward.h +59 -0
- cuda/cccl/headers/include/cuda/std/__utility/forward_like.h +55 -0
- cuda/cccl/headers/include/cuda/std/__utility/in_place.h +86 -0
- cuda/cccl/headers/include/cuda/std/__utility/integer_sequence.h +251 -0
- cuda/cccl/headers/include/cuda/std/__utility/monostate.h +99 -0
- cuda/cccl/headers/include/cuda/std/__utility/move.h +74 -0
- cuda/cccl/headers/include/cuda/std/__utility/pair.h +791 -0
- cuda/cccl/headers/include/cuda/std/__utility/piecewise_construct.h +37 -0
- cuda/cccl/headers/include/cuda/std/__utility/pod_tuple.h +527 -0
- cuda/cccl/headers/include/cuda/std/__utility/priority_tag.h +40 -0
- cuda/cccl/headers/include/cuda/std/__utility/rel_ops.h +63 -0
- cuda/cccl/headers/include/cuda/std/__utility/swap.h +64 -0
- cuda/cccl/headers/include/cuda/std/__utility/to_underlying.h +40 -0
- cuda/cccl/headers/include/cuda/std/__utility/typeid.h +421 -0
- cuda/cccl/headers/include/cuda/std/__utility/undefined.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/unreachable.h +37 -0
- cuda/cccl/headers/include/cuda/std/array +518 -0
- cuda/cccl/headers/include/cuda/std/atomic +810 -0
- cuda/cccl/headers/include/cuda/std/barrier +42 -0
- cuda/cccl/headers/include/cuda/std/bit +35 -0
- cuda/cccl/headers/include/cuda/std/bitset +994 -0
- cuda/cccl/headers/include/cuda/std/cassert +28 -0
- cuda/cccl/headers/include/cuda/std/ccomplex +15 -0
- cuda/cccl/headers/include/cuda/std/cfloat +59 -0
- cuda/cccl/headers/include/cuda/std/chrono +26 -0
- cuda/cccl/headers/include/cuda/std/climits +61 -0
- cuda/cccl/headers/include/cuda/std/cmath +87 -0
- cuda/cccl/headers/include/cuda/std/complex +50 -0
- cuda/cccl/headers/include/cuda/std/concepts +48 -0
- cuda/cccl/headers/include/cuda/std/cstddef +28 -0
- cuda/cccl/headers/include/cuda/std/cstdint +178 -0
- cuda/cccl/headers/include/cuda/std/cstdlib +30 -0
- cuda/cccl/headers/include/cuda/std/cstring +110 -0
- cuda/cccl/headers/include/cuda/std/ctime +154 -0
- cuda/cccl/headers/include/cuda/std/detail/__config +45 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +207 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/algorithm +1721 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/chrono +2509 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/iosfwd +128 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/stdexcept +120 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/tuple +1365 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +2144 -0
- cuda/cccl/headers/include/cuda/std/execution +29 -0
- cuda/cccl/headers/include/cuda/std/expected +30 -0
- cuda/cccl/headers/include/cuda/std/functional +56 -0
- cuda/cccl/headers/include/cuda/std/initializer_list +44 -0
- cuda/cccl/headers/include/cuda/std/inplace_vector +2170 -0
- cuda/cccl/headers/include/cuda/std/iterator +70 -0
- cuda/cccl/headers/include/cuda/std/latch +34 -0
- cuda/cccl/headers/include/cuda/std/limits +28 -0
- cuda/cccl/headers/include/cuda/std/linalg +30 -0
- cuda/cccl/headers/include/cuda/std/mdspan +38 -0
- cuda/cccl/headers/include/cuda/std/memory +39 -0
- cuda/cccl/headers/include/cuda/std/numbers +346 -0
- cuda/cccl/headers/include/cuda/std/numeric +41 -0
- cuda/cccl/headers/include/cuda/std/optional +31 -0
- cuda/cccl/headers/include/cuda/std/ranges +69 -0
- cuda/cccl/headers/include/cuda/std/ratio +416 -0
- cuda/cccl/headers/include/cuda/std/semaphore +31 -0
- cuda/cccl/headers/include/cuda/std/source_location +83 -0
- cuda/cccl/headers/include/cuda/std/span +628 -0
- cuda/cccl/headers/include/cuda/std/string_view +925 -0
- cuda/cccl/headers/include/cuda/std/tuple +26 -0
- cuda/cccl/headers/include/cuda/std/type_traits +177 -0
- cuda/cccl/headers/include/cuda/std/utility +70 -0
- cuda/cccl/headers/include/cuda/std/variant +25 -0
- cuda/cccl/headers/include/cuda/std/version +240 -0
- cuda/cccl/headers/include/cuda/stream +31 -0
- cuda/cccl/headers/include/cuda/stream_ref +59 -0
- cuda/cccl/headers/include/cuda/type_traits +27 -0
- cuda/cccl/headers/include/cuda/utility +28 -0
- cuda/cccl/headers/include/cuda/version +16 -0
- cuda/cccl/headers/include/cuda/warp +28 -0
- cuda/cccl/headers/include/cuda/work_stealing +26 -0
- cuda/cccl/headers/include/nv/detail/__preprocessor +169 -0
- cuda/cccl/headers/include/nv/detail/__target_macros +718 -0
- cuda/cccl/headers/include/nv/target +240 -0
- cuda/cccl/headers/include/thrust/addressof.h +22 -0
- cuda/cccl/headers/include/thrust/adjacent_difference.h +254 -0
- cuda/cccl/headers/include/thrust/advance.h +57 -0
- cuda/cccl/headers/include/thrust/allocate_unique.h +299 -0
- cuda/cccl/headers/include/thrust/binary_search.h +1910 -0
- cuda/cccl/headers/include/thrust/complex.h +858 -0
- cuda/cccl/headers/include/thrust/copy.h +506 -0
- cuda/cccl/headers/include/thrust/count.h +245 -0
- cuda/cccl/headers/include/thrust/detail/adjacent_difference.inl +95 -0
- cuda/cccl/headers/include/thrust/detail/alignment.h +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +626 -0
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +192 -0
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +96 -0
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +78 -0
- cuda/cccl/headers/include/thrust/detail/allocator/no_throw_allocator.h +76 -0
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +115 -0
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +116 -0
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +77 -0
- cuda/cccl/headers/include/thrust/detail/allocator_aware_execution_policy.h +99 -0
- cuda/cccl/headers/include/thrust/detail/binary_search.inl +525 -0
- cuda/cccl/headers/include/thrust/detail/caching_allocator.h +47 -0
- cuda/cccl/headers/include/thrust/detail/complex/arithmetic.h +255 -0
- cuda/cccl/headers/include/thrust/detail/complex/c99math.h +64 -0
- cuda/cccl/headers/include/thrust/detail/complex/catrig.h +875 -0
- cuda/cccl/headers/include/thrust/detail/complex/catrigf.h +589 -0
- cuda/cccl/headers/include/thrust/detail/complex/ccosh.h +233 -0
- cuda/cccl/headers/include/thrust/detail/complex/ccoshf.h +161 -0
- cuda/cccl/headers/include/thrust/detail/complex/cexp.h +195 -0
- cuda/cccl/headers/include/thrust/detail/complex/cexpf.h +173 -0
- cuda/cccl/headers/include/thrust/detail/complex/clog.h +223 -0
- cuda/cccl/headers/include/thrust/detail/complex/clogf.h +210 -0
- cuda/cccl/headers/include/thrust/detail/complex/complex.inl +263 -0
- cuda/cccl/headers/include/thrust/detail/complex/cpow.h +50 -0
- cuda/cccl/headers/include/thrust/detail/complex/cproj.h +81 -0
- cuda/cccl/headers/include/thrust/detail/complex/csinh.h +228 -0
- cuda/cccl/headers/include/thrust/detail/complex/csinhf.h +168 -0
- cuda/cccl/headers/include/thrust/detail/complex/csqrt.h +178 -0
- cuda/cccl/headers/include/thrust/detail/complex/csqrtf.h +174 -0
- cuda/cccl/headers/include/thrust/detail/complex/ctanh.h +208 -0
- cuda/cccl/headers/include/thrust/detail/complex/ctanhf.h +133 -0
- cuda/cccl/headers/include/thrust/detail/complex/math_private.h +138 -0
- cuda/cccl/headers/include/thrust/detail/complex/stream.h +73 -0
- cuda/cccl/headers/include/thrust/detail/config/compiler.h +38 -0
- cuda/cccl/headers/include/thrust/detail/config/config.h +43 -0
- cuda/cccl/headers/include/thrust/detail/config/cpp_dialect.h +78 -0
- cuda/cccl/headers/include/thrust/detail/config/device_system.h +55 -0
- cuda/cccl/headers/include/thrust/detail/config/host_system.h +48 -0
- cuda/cccl/headers/include/thrust/detail/config/memory_resource.h +41 -0
- cuda/cccl/headers/include/thrust/detail/config/namespace.h +162 -0
- cuda/cccl/headers/include/thrust/detail/config/simple_defines.h +48 -0
- cuda/cccl/headers/include/thrust/detail/config.h +36 -0
- cuda/cccl/headers/include/thrust/detail/contiguous_storage.h +228 -0
- cuda/cccl/headers/include/thrust/detail/contiguous_storage.inl +273 -0
- cuda/cccl/headers/include/thrust/detail/copy.h +72 -0
- cuda/cccl/headers/include/thrust/detail/copy.inl +129 -0
- cuda/cccl/headers/include/thrust/detail/copy_if.h +62 -0
- cuda/cccl/headers/include/thrust/detail/copy_if.inl +102 -0
- cuda/cccl/headers/include/thrust/detail/count.h +55 -0
- cuda/cccl/headers/include/thrust/detail/count.inl +89 -0
- cuda/cccl/headers/include/thrust/detail/device_ptr.inl +48 -0
- cuda/cccl/headers/include/thrust/detail/equal.inl +93 -0
- cuda/cccl/headers/include/thrust/detail/event_error.h +160 -0
- cuda/cccl/headers/include/thrust/detail/execute_with_allocator.h +81 -0
- cuda/cccl/headers/include/thrust/detail/execute_with_allocator_fwd.h +61 -0
- cuda/cccl/headers/include/thrust/detail/execution_policy.h +120 -0
- cuda/cccl/headers/include/thrust/detail/extrema.inl +184 -0
- cuda/cccl/headers/include/thrust/detail/fill.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/find.inl +113 -0
- cuda/cccl/headers/include/thrust/detail/for_each.inl +84 -0
- cuda/cccl/headers/include/thrust/detail/function.h +49 -0
- cuda/cccl/headers/include/thrust/detail/functional/actor.h +214 -0
- cuda/cccl/headers/include/thrust/detail/functional/operators.h +386 -0
- cuda/cccl/headers/include/thrust/detail/gather.inl +173 -0
- cuda/cccl/headers/include/thrust/detail/generate.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/get_iterator_value.h +62 -0
- cuda/cccl/headers/include/thrust/detail/inner_product.inl +118 -0
- cuda/cccl/headers/include/thrust/detail/internal_functional.h +328 -0
- cuda/cccl/headers/include/thrust/detail/logical.inl +113 -0
- cuda/cccl/headers/include/thrust/detail/malloc_and_free.h +77 -0
- cuda/cccl/headers/include/thrust/detail/malloc_and_free_fwd.h +45 -0
- cuda/cccl/headers/include/thrust/detail/memory_algorithms.h +209 -0
- cuda/cccl/headers/include/thrust/detail/merge.inl +276 -0
- cuda/cccl/headers/include/thrust/detail/mismatch.inl +94 -0
- cuda/cccl/headers/include/thrust/detail/overlapped_copy.h +124 -0
- cuda/cccl/headers/include/thrust/detail/partition.inl +378 -0
- cuda/cccl/headers/include/thrust/detail/pointer.h +309 -0
- cuda/cccl/headers/include/thrust/detail/preprocessor.h +652 -0
- cuda/cccl/headers/include/thrust/detail/random_bijection.h +177 -0
- cuda/cccl/headers/include/thrust/detail/range/head_flags.h +116 -0
- cuda/cccl/headers/include/thrust/detail/range/tail_flags.h +130 -0
- cuda/cccl/headers/include/thrust/detail/raw_pointer_cast.h +52 -0
- cuda/cccl/headers/include/thrust/detail/raw_reference_cast.h +192 -0
- cuda/cccl/headers/include/thrust/detail/reduce.inl +377 -0
- cuda/cccl/headers/include/thrust/detail/reference.h +494 -0
- cuda/cccl/headers/include/thrust/detail/reference_forward_declaration.h +35 -0
- cuda/cccl/headers/include/thrust/detail/remove.inl +213 -0
- cuda/cccl/headers/include/thrust/detail/replace.inl +231 -0
- cuda/cccl/headers/include/thrust/detail/reverse.inl +88 -0
- cuda/cccl/headers/include/thrust/detail/scan.inl +518 -0
- cuda/cccl/headers/include/thrust/detail/scatter.inl +157 -0
- cuda/cccl/headers/include/thrust/detail/seq.h +66 -0
- cuda/cccl/headers/include/thrust/detail/sequence.inl +109 -0
- cuda/cccl/headers/include/thrust/detail/set_operations.inl +981 -0
- cuda/cccl/headers/include/thrust/detail/shuffle.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/sort.inl +373 -0
- cuda/cccl/headers/include/thrust/detail/static_assert.h +58 -0
- cuda/cccl/headers/include/thrust/detail/static_map.h +167 -0
- cuda/cccl/headers/include/thrust/detail/swap_ranges.inl +65 -0
- cuda/cccl/headers/include/thrust/detail/tabulate.inl +62 -0
- cuda/cccl/headers/include/thrust/detail/temporary_array.h +153 -0
- cuda/cccl/headers/include/thrust/detail/temporary_array.inl +120 -0
- cuda/cccl/headers/include/thrust/detail/temporary_buffer.h +81 -0
- cuda/cccl/headers/include/thrust/detail/transform_reduce.inl +69 -0
- cuda/cccl/headers/include/thrust/detail/transform_scan.inl +161 -0
- cuda/cccl/headers/include/thrust/detail/trivial_sequence.h +130 -0
- cuda/cccl/headers/include/thrust/detail/tuple_meta_transform.h +61 -0
- cuda/cccl/headers/include/thrust/detail/type_deduction.h +62 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/has_member_function.h +47 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/has_nested_type.h +43 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_call_possible.h +167 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_commutative.h +69 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_metafunction_defined.h +39 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_thrust_pointer.h +59 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/iterator/is_output_iterator.h +46 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/minimum_type.h +89 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/pointer_traits.h +332 -0
- cuda/cccl/headers/include/thrust/detail/type_traits.h +136 -0
- cuda/cccl/headers/include/thrust/detail/uninitialized_copy.inl +90 -0
- cuda/cccl/headers/include/thrust/detail/uninitialized_fill.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/unique.inl +373 -0
- cuda/cccl/headers/include/thrust/detail/use_default.h +34 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.h +613 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.inl +1210 -0
- cuda/cccl/headers/include/thrust/device_allocator.h +134 -0
- cuda/cccl/headers/include/thrust/device_delete.h +74 -0
- cuda/cccl/headers/include/thrust/device_free.h +85 -0
- cuda/cccl/headers/include/thrust/device_make_unique.h +56 -0
- cuda/cccl/headers/include/thrust/device_malloc.h +84 -0
- cuda/cccl/headers/include/thrust/device_malloc_allocator.h +190 -0
- cuda/cccl/headers/include/thrust/device_new.h +112 -0
- cuda/cccl/headers/include/thrust/device_new_allocator.h +179 -0
- cuda/cccl/headers/include/thrust/device_ptr.h +196 -0
- cuda/cccl/headers/include/thrust/device_reference.h +983 -0
- cuda/cccl/headers/include/thrust/device_vector.h +576 -0
- cuda/cccl/headers/include/thrust/distance.h +43 -0
- cuda/cccl/headers/include/thrust/equal.h +247 -0
- cuda/cccl/headers/include/thrust/execution_policy.h +251 -0
- cuda/cccl/headers/include/thrust/extrema.h +657 -0
- cuda/cccl/headers/include/thrust/fill.h +200 -0
- cuda/cccl/headers/include/thrust/find.h +382 -0
- cuda/cccl/headers/include/thrust/for_each.h +261 -0
- cuda/cccl/headers/include/thrust/functional.h +395 -0
- cuda/cccl/headers/include/thrust/gather.h +464 -0
- cuda/cccl/headers/include/thrust/generate.h +193 -0
- cuda/cccl/headers/include/thrust/host_vector.h +576 -0
- cuda/cccl/headers/include/thrust/inner_product.h +264 -0
- cuda/cccl/headers/include/thrust/iterator/constant_iterator.h +221 -0
- cuda/cccl/headers/include/thrust/iterator/counting_iterator.h +335 -0
- cuda/cccl/headers/include/thrust/iterator/detail/any_assign.h +48 -0
- cuda/cccl/headers/include/thrust/iterator/detail/any_system_tag.h +43 -0
- cuda/cccl/headers/include/thrust/iterator/detail/device_system_tag.h +38 -0
- cuda/cccl/headers/include/thrust/iterator/detail/host_system_tag.h +38 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_adaptor_base.h +81 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_system.h +60 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_traversal.h +65 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_with_system_and_traversal.h +57 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_facade_category.h +182 -0
- cuda/cccl/headers/include/thrust/iterator/detail/minimum_system.h +58 -0
- cuda/cccl/headers/include/thrust/iterator/detail/normal_iterator.h +69 -0
- cuda/cccl/headers/include/thrust/iterator/detail/retag.h +104 -0
- cuda/cccl/headers/include/thrust/iterator/detail/tagged_iterator.h +81 -0
- cuda/cccl/headers/include/thrust/iterator/detail/tuple_of_iterator_references.h +174 -0
- cuda/cccl/headers/include/thrust/iterator/discard_iterator.h +163 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_adaptor.h +251 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_categories.h +211 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_facade.h +659 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_traits.h +334 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_traversal_tags.h +64 -0
- cuda/cccl/headers/include/thrust/iterator/offset_iterator.h +194 -0
- cuda/cccl/headers/include/thrust/iterator/permutation_iterator.h +204 -0
- cuda/cccl/headers/include/thrust/iterator/retag.h +72 -0
- cuda/cccl/headers/include/thrust/iterator/reverse_iterator.h +51 -0
- cuda/cccl/headers/include/thrust/iterator/shuffle_iterator.h +185 -0
- cuda/cccl/headers/include/thrust/iterator/strided_iterator.h +152 -0
- cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +152 -0
- cuda/cccl/headers/include/thrust/iterator/transform_input_output_iterator.h +226 -0
- cuda/cccl/headers/include/thrust/iterator/transform_iterator.h +351 -0
- cuda/cccl/headers/include/thrust/iterator/transform_output_iterator.h +190 -0
- cuda/cccl/headers/include/thrust/iterator/zip_iterator.h +359 -0
- cuda/cccl/headers/include/thrust/logical.h +290 -0
- cuda/cccl/headers/include/thrust/memory.h +299 -0
- cuda/cccl/headers/include/thrust/merge.h +725 -0
- cuda/cccl/headers/include/thrust/mismatch.h +261 -0
- cuda/cccl/headers/include/thrust/mr/allocator.h +229 -0
- cuda/cccl/headers/include/thrust/mr/device_memory_resource.h +41 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_pool.h +528 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_sync_pool.h +118 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_tls_pool.h +67 -0
- cuda/cccl/headers/include/thrust/mr/fancy_pointer_resource.h +67 -0
- cuda/cccl/headers/include/thrust/mr/host_memory_resource.h +38 -0
- cuda/cccl/headers/include/thrust/mr/memory_resource.h +217 -0
- cuda/cccl/headers/include/thrust/mr/new.h +100 -0
- cuda/cccl/headers/include/thrust/mr/polymorphic_adaptor.h +63 -0
- cuda/cccl/headers/include/thrust/mr/pool.h +528 -0
- cuda/cccl/headers/include/thrust/mr/pool_options.h +174 -0
- cuda/cccl/headers/include/thrust/mr/sync_pool.h +114 -0
- cuda/cccl/headers/include/thrust/mr/tls_pool.h +64 -0
- cuda/cccl/headers/include/thrust/mr/universal_memory_resource.h +29 -0
- cuda/cccl/headers/include/thrust/mr/validator.h +56 -0
- cuda/cccl/headers/include/thrust/pair.h +99 -0
- cuda/cccl/headers/include/thrust/partition.h +1391 -0
- cuda/cccl/headers/include/thrust/per_device_resource.h +98 -0
- cuda/cccl/headers/include/thrust/random/detail/discard_block_engine.inl +184 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine.inl +155 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine_discard.h +104 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine.inl +151 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine_wordmask.h +53 -0
- cuda/cccl/headers/include/thrust/random/detail/mod.h +101 -0
- cuda/cccl/headers/include/thrust/random/detail/normal_distribution.inl +187 -0
- cuda/cccl/headers/include/thrust/random/detail/normal_distribution_base.h +160 -0
- cuda/cccl/headers/include/thrust/random/detail/random_core_access.h +63 -0
- cuda/cccl/headers/include/thrust/random/detail/subtract_with_carry_engine.inl +201 -0
- cuda/cccl/headers/include/thrust/random/detail/uniform_int_distribution.inl +198 -0
- cuda/cccl/headers/include/thrust/random/detail/uniform_real_distribution.inl +200 -0
- cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine.inl +183 -0
- cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine_max.h +187 -0
- cuda/cccl/headers/include/thrust/random/discard_block_engine.h +240 -0
- cuda/cccl/headers/include/thrust/random/linear_congruential_engine.h +289 -0
- cuda/cccl/headers/include/thrust/random/linear_feedback_shift_engine.h +217 -0
- cuda/cccl/headers/include/thrust/random/normal_distribution.h +257 -0
- cuda/cccl/headers/include/thrust/random/subtract_with_carry_engine.h +247 -0
- cuda/cccl/headers/include/thrust/random/uniform_int_distribution.h +261 -0
- cuda/cccl/headers/include/thrust/random/uniform_real_distribution.h +258 -0
- cuda/cccl/headers/include/thrust/random/xor_combine_engine.h +255 -0
- cuda/cccl/headers/include/thrust/random.h +120 -0
- cuda/cccl/headers/include/thrust/reduce.h +1113 -0
- cuda/cccl/headers/include/thrust/remove.h +768 -0
- cuda/cccl/headers/include/thrust/replace.h +826 -0
- cuda/cccl/headers/include/thrust/reverse.h +215 -0
- cuda/cccl/headers/include/thrust/scan.h +1671 -0
- cuda/cccl/headers/include/thrust/scatter.h +446 -0
- cuda/cccl/headers/include/thrust/sequence.h +277 -0
- cuda/cccl/headers/include/thrust/set_operations.h +3026 -0
- cuda/cccl/headers/include/thrust/shuffle.h +182 -0
- cuda/cccl/headers/include/thrust/sort.h +1320 -0
- cuda/cccl/headers/include/thrust/swap.h +147 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/adjacent_difference.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/binary_search.h +32 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/copy_if.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/count.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/equal.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/execution_policy.h +109 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/extrema.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/find.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/for_each.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/gather.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/generate.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/inner_product.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/memory.inl +60 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/merge.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/mismatch.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/partition.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reduce_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/remove.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/replace.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reverse.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scan_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scatter.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/sort.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/swap_ranges.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/tabulate.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform_reduce.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform_scan.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_copy.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/unique.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/unique_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/execution_policy.h +63 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory.h +106 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory_resource.h +72 -0
- cuda/cccl/headers/include/thrust/system/cpp/pointer.h +120 -0
- cuda/cccl/headers/include/thrust/system/cpp/vector.h +96 -0
- cuda/cccl/headers/include/thrust/system/cuda/config.h +126 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/adjacent_difference.h +219 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/assign_value.h +124 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/binary_search.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/cdp_dispatch.h +72 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/copy.h +273 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/copy_if.h +255 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/agent_launcher.h +289 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/triple_chevron_launch.h +191 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/util.h +593 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/count.h +75 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/cross_system.h +243 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/dispatch.h +233 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/equal.h +64 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/error.inl +96 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/execution_policy.h +264 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/extrema.h +476 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/fill.h +100 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +170 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/for_each.h +83 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/gather.h +91 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/generate.h +60 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/get_value.h +65 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/inner_product.h +75 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/iter_swap.h +80 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/make_unsigned_special.h +61 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/malloc_and_free.h +121 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/memory.inl +57 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/merge.h +228 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/mismatch.h +223 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/parallel_for.h +81 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/partition.h +405 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/per_device_resource.h +72 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reduce.h +785 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reduce_by_key.h +1001 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/remove.h +107 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/replace.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reverse.h +87 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan.h +341 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan_by_key.h +414 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scatter.h +91 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/set_operations.h +1734 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sort.h +469 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/swap_ranges.h +98 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/tabulate.h +61 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/temporary_buffer.h +132 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/terminate.h +53 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform.h +429 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform_reduce.h +143 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform_scan.h +119 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_copy.h +117 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_fill.h +105 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique.h +289 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique_by_key.h +310 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/util.h +253 -0
- cuda/cccl/headers/include/thrust/system/cuda/error.h +168 -0
- cuda/cccl/headers/include/thrust/system/cuda/execution_policy.h +15 -0
- cuda/cccl/headers/include/thrust/system/cuda/memory.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/memory_resource.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/pointer.h +160 -0
- cuda/cccl/headers/include/thrust/system/cuda/vector.h +108 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/adjacent_difference.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/assign_value.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/binary_search.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/copy_if.h +52 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/count.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/equal.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/extrema.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/fill.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/find.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/for_each.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/gather.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/generate.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/get_value.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/inner_product.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/iter_swap.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/logical.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/malloc_and_free.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/merge.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/mismatch.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/partition.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/per_device_resource.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reduce.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reduce_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/remove.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/replace.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reverse.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scan.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scan_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scatter.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/sequence.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/set_operations.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/sort.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/swap_ranges.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/tabulate.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/temporary_buffer.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform_reduce.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform_scan.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_fill.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/unique.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/unique_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/bad_alloc.h +61 -0
- cuda/cccl/headers/include/thrust/system/detail/errno.h +120 -0
- cuda/cccl/headers/include/thrust/system/detail/error_category.inl +302 -0
- cuda/cccl/headers/include/thrust/system/detail/error_code.inl +173 -0
- cuda/cccl/headers/include/thrust/system/detail/error_condition.inl +121 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.h +53 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.inl +79 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.h +161 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.inl +384 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.inl +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.inl +146 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.inl +84 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.inl +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.inl +252 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/fill.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.inl +137 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/for_each.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.h +73 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.inl +96 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.inl +63 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.h +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.inl +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/logical.h +59 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.inl +86 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.h +99 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.inl +148 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.inl +68 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.h +129 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.inl +207 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/per_device_resource.h +43 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.inl +100 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.h +83 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.inl +186 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.h +86 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.inl +121 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.h +95 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.inl +175 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.inl +67 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.h +63 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.inl +126 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.h +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.inl +85 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.h +126 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.inl +232 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.h +73 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.inl +85 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/select_system.h +104 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sequence.h +70 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.h +282 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.inl +476 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.inl +125 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.h +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.inl +175 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.h +44 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.inl +76 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.h +41 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.inl +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tag.h +47 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.inl +82 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform.h +395 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.h +50 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.inl +56 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.h +80 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.inl +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.inl +166 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.inl +115 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.inl +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.h +81 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.inl +126 -0
- cuda/cccl/headers/include/thrust/system/detail/internal/decompose.h +117 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/adjacent_difference.h +70 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/assign_value.h +42 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/binary_search.h +136 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.inl +119 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_backward.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_if.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/count.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/equal.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/execution_policy.h +52 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/extrema.h +110 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/find.h +62 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/for_each.h +74 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/gather.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/general_copy.h +123 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/generate.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/get_value.h +43 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/inner_product.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/insertion_sort.h +141 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/iter_swap.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/malloc_and_free.h +50 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.h +75 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.inl +145 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/mismatch.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/partition.h +301 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reduce.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reduce_by_key.h +98 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/remove.h +179 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/replace.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reverse.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scan.h +154 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scan_by_key.h +145 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scatter.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/set_operations.h +206 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.h +59 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.inl +116 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.inl +356 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.inl +124 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.inl +586 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/swap_ranges.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/tabulate.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform_reduce.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform_scan.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/trivial_copy.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_copy.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/unique.h +115 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/unique_by_key.h +106 -0
- cuda/cccl/headers/include/thrust/system/detail/system_error.inl +108 -0
- cuda/cccl/headers/include/thrust/system/error_code.h +512 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/adjacent_difference.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/binary_search.h +77 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy.h +50 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy.inl +74 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.h +56 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.inl +59 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/count.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.h +50 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.inl +65 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/equal.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/execution_policy.h +127 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/find.h +53 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/for_each.h +56 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/for_each.inl +87 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/gather.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/generate.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/inner_product.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/logical.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/memory.inl +93 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/merge.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/mismatch.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/partition.h +88 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/partition.inl +102 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/pragma_omp.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce.inl +78 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.h +64 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.inl +65 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.h +59 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.inl +103 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/remove.h +72 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/remove.inl +87 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/replace.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reverse.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan.h +73 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan.inl +172 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan_by_key.h +36 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scatter.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sequence.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sort.h +60 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sort.inl +265 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/swap_ranges.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/tabulate.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform_reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform_scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique.h +60 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique.inl +71 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.h +67 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.inl +75 -0
- cuda/cccl/headers/include/thrust/system/omp/execution_policy.h +62 -0
- cuda/cccl/headers/include/thrust/system/omp/memory.h +111 -0
- cuda/cccl/headers/include/thrust/system/omp/memory_resource.h +75 -0
- cuda/cccl/headers/include/thrust/system/omp/pointer.h +124 -0
- cuda/cccl/headers/include/thrust/system/omp/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system/system_error.h +185 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/adjacent_difference.h +54 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/binary_search.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy.h +50 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy.inl +73 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.h +47 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.inl +136 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/count.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/equal.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/execution_policy.h +109 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/find.h +49 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.h +51 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.inl +91 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/gather.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/generate.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/inner_product.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/logical.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/memory.inl +94 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/merge.h +77 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/merge.inl +327 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/mismatch.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/partition.h +84 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/partition.inl +98 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.h +54 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.inl +137 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.h +61 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.inl +400 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_intervals.h +140 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/remove.h +76 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/remove.inl +87 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/replace.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reverse.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan.h +59 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan.inl +312 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan_by_key.h +33 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scatter.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sequence.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sort.h +60 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sort.inl +295 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/swap_ranges.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/tabulate.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform_reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform_scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique.h +60 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique.inl +71 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.h +67 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.inl +75 -0
- cuda/cccl/headers/include/thrust/system/tbb/execution_policy.h +62 -0
- cuda/cccl/headers/include/thrust/system/tbb/memory.h +111 -0
- cuda/cccl/headers/include/thrust/system/tbb/memory_resource.h +75 -0
- cuda/cccl/headers/include/thrust/system/tbb/pointer.h +124 -0
- cuda/cccl/headers/include/thrust/system/tbb/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system_error.h +57 -0
- cuda/cccl/headers/include/thrust/tabulate.h +125 -0
- cuda/cccl/headers/include/thrust/transform.h +1045 -0
- cuda/cccl/headers/include/thrust/transform_reduce.h +190 -0
- cuda/cccl/headers/include/thrust/transform_scan.h +442 -0
- cuda/cccl/headers/include/thrust/tuple.h +139 -0
- cuda/cccl/headers/include/thrust/type_traits/integer_sequence.h +261 -0
- cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +154 -0
- cuda/cccl/headers/include/thrust/type_traits/is_execution_policy.h +65 -0
- cuda/cccl/headers/include/thrust/type_traits/is_operator_less_or_greater_function_object.h +184 -0
- cuda/cccl/headers/include/thrust/type_traits/is_operator_plus_function_object.h +116 -0
- cuda/cccl/headers/include/thrust/type_traits/is_trivially_relocatable.h +336 -0
- cuda/cccl/headers/include/thrust/type_traits/logical_metafunctions.h +42 -0
- cuda/cccl/headers/include/thrust/type_traits/unwrap_contiguous_iterator.h +63 -0
- cuda/cccl/headers/include/thrust/uninitialized_copy.h +300 -0
- cuda/cccl/headers/include/thrust/uninitialized_fill.h +268 -0
- cuda/cccl/headers/include/thrust/unique.h +1088 -0
- cuda/cccl/headers/include/thrust/universal_allocator.h +93 -0
- cuda/cccl/headers/include/thrust/universal_ptr.h +34 -0
- cuda/cccl/headers/include/thrust/universal_vector.h +71 -0
- cuda/cccl/headers/include/thrust/version.h +93 -0
- cuda/cccl/headers/include/thrust/zip_function.h +176 -0
- cuda/cccl/headers/include_paths.py +51 -0
- cuda/cccl/parallel/__init__.py +9 -0
- cuda/cccl/parallel/experimental/__init__.py +24 -0
- cuda/cccl/py.typed +0 -0
- cuda/compute/__init__.py +79 -0
- cuda/compute/_bindings.py +79 -0
- cuda/compute/_bindings.pyi +475 -0
- cuda/compute/_bindings_impl.pyx +2273 -0
- cuda/compute/_caching.py +71 -0
- cuda/compute/_cccl_interop.py +422 -0
- cuda/compute/_utils/__init__.py +0 -0
- cuda/compute/_utils/protocols.py +132 -0
- cuda/compute/_utils/temp_storage_buffer.py +86 -0
- cuda/compute/algorithms/__init__.py +54 -0
- cuda/compute/algorithms/_histogram.py +243 -0
- cuda/compute/algorithms/_merge_sort.py +225 -0
- cuda/compute/algorithms/_radix_sort.py +312 -0
- cuda/compute/algorithms/_reduce.py +182 -0
- cuda/compute/algorithms/_scan.py +331 -0
- cuda/compute/algorithms/_segmented_reduce.py +257 -0
- cuda/compute/algorithms/_three_way_partition.py +261 -0
- cuda/compute/algorithms/_transform.py +329 -0
- cuda/compute/algorithms/_unique_by_key.py +252 -0
- cuda/compute/cccl/.gitkeep +0 -0
- cuda/compute/cu12/_bindings_impl.cp313-win_amd64.pyd +0 -0
- cuda/compute/cu12/cccl/cccl.c.parallel.dll +0 -0
- cuda/compute/cu12/cccl/cccl.c.parallel.lib +0 -0
- cuda/compute/cu13/_bindings_impl.cp313-win_amd64.pyd +0 -0
- cuda/compute/cu13/cccl/cccl.c.parallel.dll +0 -0
- cuda/compute/cu13/cccl/cccl.c.parallel.lib +0 -0
- cuda/compute/iterators/__init__.py +21 -0
- cuda/compute/iterators/_factories.py +219 -0
- cuda/compute/iterators/_iterators.py +817 -0
- cuda/compute/iterators/_zip_iterator.py +199 -0
- cuda/compute/numba_utils.py +53 -0
- cuda/compute/op.py +3 -0
- cuda/compute/struct.py +272 -0
- cuda/compute/typing.py +37 -0
- cuda/coop/__init__.py +8 -0
- cuda/coop/_caching.py +48 -0
- cuda/coop/_common.py +275 -0
- cuda/coop/_nvrtc.py +92 -0
- cuda/coop/_scan_op.py +181 -0
- cuda/coop/_types.py +937 -0
- cuda/coop/_typing.py +107 -0
- cuda/coop/block/__init__.py +39 -0
- cuda/coop/block/_block_exchange.py +251 -0
- cuda/coop/block/_block_load_store.py +215 -0
- cuda/coop/block/_block_merge_sort.py +125 -0
- cuda/coop/block/_block_radix_sort.py +214 -0
- cuda/coop/block/_block_reduce.py +294 -0
- cuda/coop/block/_block_scan.py +983 -0
- cuda/coop/warp/__init__.py +9 -0
- cuda/coop/warp/_warp_merge_sort.py +92 -0
- cuda/coop/warp/_warp_reduce.py +153 -0
- cuda/coop/warp/_warp_scan.py +78 -0
- cuda_cccl-0.3.3.dist-info/METADATA +41 -0
- cuda_cccl-0.3.3.dist-info/RECORD +1968 -0
- cuda_cccl-0.3.3.dist-info/WHEEL +5 -0
- cuda_cccl-0.3.3.dist-info/licenses/LICENSE +1 -0
|
@@ -0,0 +1,2144 @@
|
|
|
1
|
+
// -*- C++ -*-
|
|
2
|
+
//===----------------------------------------------------------------------===//
|
|
3
|
+
//
|
|
4
|
+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
5
|
+
// See https://llvm.org/LICENSE.txt for license information.
|
|
6
|
+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
7
|
+
//
|
|
8
|
+
//===----------------------------------------------------------------------===//
|
|
9
|
+
|
|
10
|
+
#ifndef _LIBCUDACXX_VARIANT
|
|
11
|
+
#define _LIBCUDACXX_VARIANT
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
variant synopsis
|
|
15
|
+
|
|
16
|
+
namespace std {
|
|
17
|
+
|
|
18
|
+
// 20.7.2, class template variant
|
|
19
|
+
template <class... Types>
|
|
20
|
+
class variant {
|
|
21
|
+
public:
|
|
22
|
+
|
|
23
|
+
// 20.7.2.1, constructors
|
|
24
|
+
constexpr variant() noexcept(see below);
|
|
25
|
+
constexpr variant(const variant&);
|
|
26
|
+
constexpr variant(variant&&) noexcept(see below);
|
|
27
|
+
|
|
28
|
+
template <class T> constexpr variant(T&&) noexcept(see below);
|
|
29
|
+
|
|
30
|
+
template <class T, class... Args>
|
|
31
|
+
constexpr explicit variant(in_place_type_t<T>, Args&&...);
|
|
32
|
+
|
|
33
|
+
template <class T, class U, class... Args>
|
|
34
|
+
constexpr explicit variant(
|
|
35
|
+
in_place_type_t<T>, initializer_list<U>, Args&&...);
|
|
36
|
+
|
|
37
|
+
template <size_t I, class... Args>
|
|
38
|
+
constexpr explicit variant(in_place_index_t<I>, Args&&...);
|
|
39
|
+
|
|
40
|
+
template <size_t I, class U, class... Args>
|
|
41
|
+
constexpr explicit variant(
|
|
42
|
+
in_place_index_t<I>, initializer_list<U>, Args&&...);
|
|
43
|
+
|
|
44
|
+
// 20.7.2.2, destructor
|
|
45
|
+
~variant();
|
|
46
|
+
|
|
47
|
+
// 20.7.2.3, assignment
|
|
48
|
+
constexpr variant& operator=(const variant&);
|
|
49
|
+
constexpr variant& operator=(variant&&) noexcept(see below);
|
|
50
|
+
|
|
51
|
+
template <class T> variant& operator=(T&&) noexcept(see below);
|
|
52
|
+
|
|
53
|
+
// 20.7.2.4, modifiers
|
|
54
|
+
template <class T, class... Args>
|
|
55
|
+
T& emplace(Args&&...);
|
|
56
|
+
|
|
57
|
+
template <class T, class U, class... Args>
|
|
58
|
+
T& emplace(initializer_list<U>, Args&&...);
|
|
59
|
+
|
|
60
|
+
template <size_t I, class... Args>
|
|
61
|
+
variant_alternative_t<I, variant>& emplace(Args&&...);
|
|
62
|
+
|
|
63
|
+
template <size_t I, class U, class... Args>
|
|
64
|
+
variant_alternative_t<I, variant>& emplace(initializer_list<U>, Args&&...);
|
|
65
|
+
|
|
66
|
+
// 20.7.2.5, value status
|
|
67
|
+
constexpr bool valueless_by_exception() const noexcept;
|
|
68
|
+
constexpr size_t index() const noexcept;
|
|
69
|
+
|
|
70
|
+
// 20.7.2.6, swap
|
|
71
|
+
void swap(variant&) noexcept(see below);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// 20.7.3, variant helper classes
|
|
75
|
+
template <class T> struct variant_size; // undefined
|
|
76
|
+
|
|
77
|
+
template <class T>
|
|
78
|
+
inline constexpr size_t variant_size_v = variant_size<T>::value;
|
|
79
|
+
|
|
80
|
+
template <class T> struct variant_size<const T>;
|
|
81
|
+
template <class T> struct variant_size<volatile T>;
|
|
82
|
+
template <class T> struct variant_size<const volatile T>;
|
|
83
|
+
|
|
84
|
+
template <class... Types>
|
|
85
|
+
struct variant_size<variant<Types...>>;
|
|
86
|
+
|
|
87
|
+
template <size_t I, class T> struct variant_alternative; // undefined
|
|
88
|
+
|
|
89
|
+
template <size_t I, class T>
|
|
90
|
+
using variant_alternative_t = typename variant_alternative<I, T>::type;
|
|
91
|
+
|
|
92
|
+
template <size_t I, class T> struct variant_alternative<I, const T>;
|
|
93
|
+
template <size_t I, class T> struct variant_alternative<I, volatile T>;
|
|
94
|
+
template <size_t I, class T> struct variant_alternative<I, const volatile T>;
|
|
95
|
+
|
|
96
|
+
template <size_t I, class... Types>
|
|
97
|
+
struct variant_alternative<I, variant<Types...>>;
|
|
98
|
+
|
|
99
|
+
inline constexpr size_t variant_npos = -1;
|
|
100
|
+
|
|
101
|
+
// 20.7.4, value access
|
|
102
|
+
template <class T, class... Types>
|
|
103
|
+
constexpr bool holds_alternative(const variant<Types...>&) noexcept;
|
|
104
|
+
|
|
105
|
+
template <size_t I, class... Types>
|
|
106
|
+
constexpr variant_alternative_t<I, variant<Types...>>&
|
|
107
|
+
get(variant<Types...>&);
|
|
108
|
+
|
|
109
|
+
template <size_t I, class... Types>
|
|
110
|
+
constexpr variant_alternative_t<I, variant<Types...>>&&
|
|
111
|
+
get(variant<Types...>&&);
|
|
112
|
+
|
|
113
|
+
template <size_t I, class... Types>
|
|
114
|
+
constexpr variant_alternative_t<I, variant<Types...>> const&
|
|
115
|
+
get(const variant<Types...>&);
|
|
116
|
+
|
|
117
|
+
template <size_t I, class... Types>
|
|
118
|
+
constexpr variant_alternative_t<I, variant<Types...>> const&&
|
|
119
|
+
get(const variant<Types...>&&);
|
|
120
|
+
|
|
121
|
+
template <class T, class... Types>
|
|
122
|
+
constexpr T& get(variant<Types...>&);
|
|
123
|
+
|
|
124
|
+
template <class T, class... Types>
|
|
125
|
+
constexpr T&& get(variant<Types...>&&);
|
|
126
|
+
|
|
127
|
+
template <class T, class... Types>
|
|
128
|
+
constexpr const T& get(const variant<Types...>&);
|
|
129
|
+
|
|
130
|
+
template <class T, class... Types>
|
|
131
|
+
constexpr const T&& get(const variant<Types...>&&);
|
|
132
|
+
|
|
133
|
+
template <size_t I, class... Types>
|
|
134
|
+
constexpr add_pointer_t<variant_alternative_t<I, variant<Types...>>>
|
|
135
|
+
get_if(variant<Types...>*) noexcept;
|
|
136
|
+
|
|
137
|
+
template <size_t I, class... Types>
|
|
138
|
+
constexpr add_pointer_t<const variant_alternative_t<I, variant<Types...>>>
|
|
139
|
+
get_if(const variant<Types...>*) noexcept;
|
|
140
|
+
|
|
141
|
+
template <class T, class... Types>
|
|
142
|
+
constexpr add_pointer_t<T>
|
|
143
|
+
get_if(variant<Types...>*) noexcept;
|
|
144
|
+
|
|
145
|
+
template <class T, class... Types>
|
|
146
|
+
constexpr add_pointer_t<const T>
|
|
147
|
+
get_if(const variant<Types...>*) noexcept;
|
|
148
|
+
|
|
149
|
+
// 20.7.5, relational operators
|
|
150
|
+
template <class... Types>
|
|
151
|
+
constexpr bool operator==(const variant<Types...>&, const variant<Types...>&);
|
|
152
|
+
|
|
153
|
+
template <class... Types>
|
|
154
|
+
constexpr bool operator!=(const variant<Types...>&, const variant<Types...>&);
|
|
155
|
+
|
|
156
|
+
template <class... Types>
|
|
157
|
+
constexpr bool operator<(const variant<Types...>&, const variant<Types...>&);
|
|
158
|
+
|
|
159
|
+
template <class... Types>
|
|
160
|
+
constexpr bool operator>(const variant<Types...>&, const variant<Types...>&);
|
|
161
|
+
|
|
162
|
+
template <class... Types>
|
|
163
|
+
constexpr bool operator<=(const variant<Types...>&, const variant<Types...>&);
|
|
164
|
+
|
|
165
|
+
template <class... Types>
|
|
166
|
+
constexpr bool operator>=(const variant<Types...>&, const variant<Types...>&);
|
|
167
|
+
|
|
168
|
+
template <class... Types> requires (three_way_comparable<Types> && ...)
|
|
169
|
+
constexpr common_comparison_category_t<compare_three_way_result_t<Types>...>
|
|
170
|
+
operator<=>(const variant<Types...>&, const variant<Types...>&); // since
|
|
171
|
+
C++20
|
|
172
|
+
|
|
173
|
+
// 20.7.6, visitation
|
|
174
|
+
template <class Visitor, class... Variants>
|
|
175
|
+
constexpr see below visit(Visitor&&, Variants&&...);
|
|
176
|
+
|
|
177
|
+
template <class R, class Visitor, class... Variants>
|
|
178
|
+
constexpr R visit(Visitor&&, Variants&&...); // since C++20
|
|
179
|
+
|
|
180
|
+
// 20.7.7, class monostate
|
|
181
|
+
struct monostate;
|
|
182
|
+
|
|
183
|
+
// 20.7.8, monostate relational operators
|
|
184
|
+
constexpr bool operator==(monostate, monostate) noexcept;
|
|
185
|
+
constexpr bool operator!=(monostate, monostate) noexcept; // until C++20
|
|
186
|
+
constexpr bool operator<(monostate, monostate) noexcept; // until C++20
|
|
187
|
+
constexpr bool operator>(monostate, monostate) noexcept; // until C++20
|
|
188
|
+
constexpr bool operator<=(monostate, monostate) noexcept; // until C++20
|
|
189
|
+
constexpr bool operator>=(monostate, monostate) noexcept; // until C++20
|
|
190
|
+
constexpr strong_ordering operator<=>(monostate, monostate) noexcept; // since C++20
|
|
191
|
+
|
|
192
|
+
// 20.7.9, specialized algorithms
|
|
193
|
+
template <class... Types>
|
|
194
|
+
void swap(variant<Types...>&, variant<Types...>&) noexcept(see below);
|
|
195
|
+
|
|
196
|
+
// 20.7.10, class bad_variant_access
|
|
197
|
+
class bad_variant_access;
|
|
198
|
+
|
|
199
|
+
// 20.7.11, hash support
|
|
200
|
+
template <class T> struct hash;
|
|
201
|
+
template <class... Types> struct hash<variant<Types...>>;
|
|
202
|
+
template <> struct hash<monostate>;
|
|
203
|
+
|
|
204
|
+
} // namespace std
|
|
205
|
+
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
#include <cuda/std/detail/__config>
|
|
209
|
+
|
|
210
|
+
#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
|
|
211
|
+
# pragma GCC system_header
|
|
212
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
|
|
213
|
+
# pragma clang system_header
|
|
214
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
|
|
215
|
+
# pragma system_header
|
|
216
|
+
#endif // no system header
|
|
217
|
+
|
|
218
|
+
#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
219
|
+
# include <cuda/std/__compare/common_comparison_category.h>
|
|
220
|
+
# include <cuda/std/__compare/compare_three_way_result.h>
|
|
221
|
+
# include <cuda/std/__compare/three_way_comparable.h>
|
|
222
|
+
#endif // _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
223
|
+
#include <cuda/std/__exception/terminate.h>
|
|
224
|
+
#include <cuda/std/__functional/hash.h>
|
|
225
|
+
#include <cuda/std/__functional/invoke.h>
|
|
226
|
+
#include <cuda/std/__functional/operations.h>
|
|
227
|
+
#include <cuda/std/__functional/unary_function.h>
|
|
228
|
+
#include <cuda/std/__memory/addressof.h>
|
|
229
|
+
#include <cuda/std/__memory/construct_at.h>
|
|
230
|
+
#include <cuda/std/__tuple_dir/tuple_indices.h>
|
|
231
|
+
#include <cuda/std/__type_traits/add_const.h>
|
|
232
|
+
#include <cuda/std/__type_traits/add_cv.h>
|
|
233
|
+
#include <cuda/std/__type_traits/add_pointer.h>
|
|
234
|
+
#include <cuda/std/__type_traits/add_volatile.h>
|
|
235
|
+
#include <cuda/std/__type_traits/dependent_type.h>
|
|
236
|
+
#include <cuda/std/__type_traits/integral_constant.h>
|
|
237
|
+
#include <cuda/std/__type_traits/is_array.h>
|
|
238
|
+
#include <cuda/std/__type_traits/is_destructible.h>
|
|
239
|
+
#include <cuda/std/__type_traits/is_nothrow_move_constructible.h>
|
|
240
|
+
#include <cuda/std/__type_traits/is_trivially_copy_assignable.h>
|
|
241
|
+
#include <cuda/std/__type_traits/is_trivially_copy_constructible.h>
|
|
242
|
+
#include <cuda/std/__type_traits/is_trivially_destructible.h>
|
|
243
|
+
#include <cuda/std/__type_traits/is_trivially_move_assignable.h>
|
|
244
|
+
#include <cuda/std/__type_traits/is_trivially_move_constructible.h>
|
|
245
|
+
#include <cuda/std/__type_traits/is_void.h>
|
|
246
|
+
#include <cuda/std/__type_traits/remove_const.h>
|
|
247
|
+
#include <cuda/std/__type_traits/remove_cvref.h>
|
|
248
|
+
#include <cuda/std/__type_traits/type_identity.h>
|
|
249
|
+
#include <cuda/std/__type_traits/type_list.h>
|
|
250
|
+
#include <cuda/std/__type_traits/void_t.h>
|
|
251
|
+
#include <cuda/std/__utility/declval.h>
|
|
252
|
+
#include <cuda/std/__utility/forward.h>
|
|
253
|
+
#include <cuda/std/__utility/in_place.h>
|
|
254
|
+
#include <cuda/std/__utility/integer_sequence.h>
|
|
255
|
+
#include <cuda/std/__utility/monostate.h>
|
|
256
|
+
#include <cuda/std/__utility/move.h>
|
|
257
|
+
#include <cuda/std/__utility/swap.h>
|
|
258
|
+
#include <cuda/std/__utility/unreachable.h>
|
|
259
|
+
#include <cuda/std/cstddef>
|
|
260
|
+
#include <cuda/std/initializer_list>
|
|
261
|
+
#include <cuda/std/tuple>
|
|
262
|
+
#include <cuda/std/version>
|
|
263
|
+
|
|
264
|
+
// [variant.syn]
|
|
265
|
+
#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
266
|
+
# include <cuda/std/detail/libcxx/include/compare>
|
|
267
|
+
#endif // _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
268
|
+
|
|
269
|
+
#if _CCCL_HAS_EXCEPTIONS()
|
|
270
|
+
# ifdef __cpp_lib_variant
|
|
271
|
+
# include <variant>
|
|
272
|
+
# else // ^^^ __cpp_lib_variant ^^^ / vvv !__cpp_lib_variant vvv
|
|
273
|
+
# include <exception>
|
|
274
|
+
# endif // !__cpp_lib_variant
|
|
275
|
+
|
|
276
|
+
# include <cuda/std/__cccl/prologue.h>
|
|
277
|
+
|
|
278
|
+
_CCCL_BEGIN_NAMESPACE_CUDA_STD_NOVERSION
|
|
279
|
+
|
|
280
|
+
# ifdef __cpp_lib_variant
|
|
281
|
+
|
|
282
|
+
using ::std::bad_variant_access;
|
|
283
|
+
|
|
284
|
+
# else // ^^^ __cpp_lib_variant ^^^ / vvv !__cpp_lib_variant vvv
|
|
285
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT bad_variant_access : public ::std::exception
|
|
286
|
+
{
|
|
287
|
+
public:
|
|
288
|
+
const char* what() const noexcept override
|
|
289
|
+
{
|
|
290
|
+
return "bad access to cuda::std::variant";
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
# endif // !__cpp_lib_variant
|
|
294
|
+
|
|
295
|
+
_CCCL_END_NAMESPACE_CUDA_STD_NOVERSION
|
|
296
|
+
|
|
297
|
+
# include <cuda/std/__cccl/epilogue.h>
|
|
298
|
+
|
|
299
|
+
#endif // _CCCL_HAS_EXCEPTIONS()
|
|
300
|
+
|
|
301
|
+
#include <cuda/std/__cccl/prologue.h>
|
|
302
|
+
|
|
303
|
+
_CCCL_BEGIN_NAMESPACE_CUDA_STD
|
|
304
|
+
|
|
305
|
+
[[noreturn]] _CCCL_API inline void __throw_bad_variant_access()
|
|
306
|
+
{
|
|
307
|
+
#if _CCCL_HAS_EXCEPTIONS()
|
|
308
|
+
NV_IF_ELSE_TARGET(NV_IS_HOST, (throw ::cuda::std::bad_variant_access();), (::cuda::std::terminate();))
|
|
309
|
+
#else // ^^^ !_CCCL_HAS_EXCEPTIONS() ^^^ / vvv _CCCL_HAS_EXCEPTIONS() vvv
|
|
310
|
+
::cuda::std::terminate();
|
|
311
|
+
#endif // _CCCL_HAS_EXCEPTIONS()
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
template <class... _Types>
|
|
315
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT variant;
|
|
316
|
+
|
|
317
|
+
template <class _Tp>
|
|
318
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_size;
|
|
319
|
+
|
|
320
|
+
template <class _Tp>
|
|
321
|
+
inline constexpr size_t variant_size_v = variant_size<_Tp>::value;
|
|
322
|
+
|
|
323
|
+
template <class _Tp>
|
|
324
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_size<const _Tp> : variant_size<_Tp>
|
|
325
|
+
{};
|
|
326
|
+
|
|
327
|
+
template <class _Tp>
|
|
328
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_size<volatile _Tp> : variant_size<_Tp>
|
|
329
|
+
{};
|
|
330
|
+
|
|
331
|
+
template <class _Tp>
|
|
332
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_size<const volatile _Tp> : variant_size<_Tp>
|
|
333
|
+
{};
|
|
334
|
+
|
|
335
|
+
template <class... _Types>
|
|
336
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_size<variant<_Types...>> : integral_constant<size_t, sizeof...(_Types)>
|
|
337
|
+
{};
|
|
338
|
+
|
|
339
|
+
template <size_t _Ip, class _Tp>
|
|
340
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_alternative;
|
|
341
|
+
|
|
342
|
+
template <size_t _Ip, class _Tp>
|
|
343
|
+
using variant_alternative_t = typename variant_alternative<_Ip, _Tp>::type;
|
|
344
|
+
|
|
345
|
+
template <size_t _Ip, class _Tp>
|
|
346
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_alternative<_Ip, const _Tp> : add_const<variant_alternative_t<_Ip, _Tp>>
|
|
347
|
+
{};
|
|
348
|
+
|
|
349
|
+
template <size_t _Ip, class _Tp>
|
|
350
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT
|
|
351
|
+
variant_alternative<_Ip, volatile _Tp> : add_volatile<variant_alternative_t<_Ip, _Tp>>
|
|
352
|
+
{};
|
|
353
|
+
|
|
354
|
+
template <size_t _Ip, class _Tp>
|
|
355
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT
|
|
356
|
+
variant_alternative<_Ip, const volatile _Tp> : add_cv<variant_alternative_t<_Ip, _Tp>>
|
|
357
|
+
{};
|
|
358
|
+
|
|
359
|
+
template <size_t _Ip, class... _Types>
|
|
360
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT variant_alternative<_Ip, variant<_Types...>>
|
|
361
|
+
{
|
|
362
|
+
static_assert(_Ip < sizeof...(_Types), "Index out of bounds in ::cuda::std::variant_alternative<>");
|
|
363
|
+
using type = __type_index_c<_Ip, _Types...>;
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
inline constexpr size_t variant_npos = static_cast<size_t>(-1);
|
|
367
|
+
|
|
368
|
+
_CCCL_API constexpr int __choose_index_type(unsigned int __num_elem)
|
|
369
|
+
{
|
|
370
|
+
constexpr unsigned char __small = static_cast<unsigned char>(-1);
|
|
371
|
+
constexpr unsigned short __medium = static_cast<unsigned short>(-1);
|
|
372
|
+
if (__num_elem < static_cast<unsigned int>(__small))
|
|
373
|
+
{
|
|
374
|
+
return 0;
|
|
375
|
+
}
|
|
376
|
+
if (__num_elem < static_cast<unsigned int>(__medium))
|
|
377
|
+
{
|
|
378
|
+
return 1;
|
|
379
|
+
}
|
|
380
|
+
return 2;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
template <size_t _NumAlts>
|
|
384
|
+
using __variant_index_t =
|
|
385
|
+
conditional_t<__choose_index_type(_NumAlts) == 0,
|
|
386
|
+
unsigned char,
|
|
387
|
+
conditional_t<__choose_index_type(_NumAlts) == 1, unsigned short, unsigned int>>;
|
|
388
|
+
|
|
389
|
+
template <class _IndexType>
|
|
390
|
+
constexpr _IndexType __variant_npos = static_cast<_IndexType>(-1);
|
|
391
|
+
|
|
392
|
+
template <class... _Types>
|
|
393
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT variant;
|
|
394
|
+
|
|
395
|
+
template <class... _Types>
|
|
396
|
+
_CCCL_API constexpr variant<_Types...>& __as_variant(variant<_Types...>& __vs) noexcept
|
|
397
|
+
{
|
|
398
|
+
return __vs;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
template <class... _Types>
|
|
402
|
+
_CCCL_API constexpr const variant<_Types...>& __as_variant(const variant<_Types...>& __vs) noexcept
|
|
403
|
+
{
|
|
404
|
+
return __vs;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
template <class... _Types>
|
|
408
|
+
_CCCL_API constexpr variant<_Types...>&& __as_variant(variant<_Types...>&& __vs) noexcept
|
|
409
|
+
{
|
|
410
|
+
return ::cuda::std::move(__vs);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
template <class... _Types>
|
|
414
|
+
_CCCL_API constexpr const variant<_Types...>&& __as_variant(const variant<_Types...>&& __vs) noexcept
|
|
415
|
+
{
|
|
416
|
+
return ::cuda::std::move(__vs);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
namespace __find_detail
|
|
420
|
+
{
|
|
421
|
+
|
|
422
|
+
template <class _Tp, class... _Types>
|
|
423
|
+
_CCCL_API constexpr size_t __find_index()
|
|
424
|
+
{
|
|
425
|
+
constexpr bool __matches[] = {is_same_v<_Tp, _Types>...};
|
|
426
|
+
size_t __result = __not_found;
|
|
427
|
+
for (size_t __i = 0; __i < sizeof...(_Types); ++__i)
|
|
428
|
+
{
|
|
429
|
+
if (__matches[__i])
|
|
430
|
+
{
|
|
431
|
+
if (__result != __not_found)
|
|
432
|
+
{
|
|
433
|
+
return __ambiguous;
|
|
434
|
+
}
|
|
435
|
+
__result = __i;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return __result;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
template <size_t _Index>
|
|
442
|
+
struct __find_unambiguous_index_sfinae_impl : integral_constant<size_t, _Index>
|
|
443
|
+
{};
|
|
444
|
+
|
|
445
|
+
template <>
|
|
446
|
+
struct __find_unambiguous_index_sfinae_impl<__not_found>
|
|
447
|
+
{};
|
|
448
|
+
|
|
449
|
+
template <>
|
|
450
|
+
struct __find_unambiguous_index_sfinae_impl<__ambiguous>
|
|
451
|
+
{};
|
|
452
|
+
|
|
453
|
+
template <class _Tp, class... _Types>
|
|
454
|
+
struct __find_unambiguous_index_sfinae : __find_unambiguous_index_sfinae_impl<__find_index<_Tp, _Types...>()>
|
|
455
|
+
{};
|
|
456
|
+
|
|
457
|
+
} // namespace __find_detail
|
|
458
|
+
|
|
459
|
+
namespace __variant_detail
|
|
460
|
+
{
|
|
461
|
+
|
|
462
|
+
struct __valueless_t
|
|
463
|
+
{};
|
|
464
|
+
|
|
465
|
+
enum class _Trait
|
|
466
|
+
{
|
|
467
|
+
_TriviallyAvailable,
|
|
468
|
+
_Available,
|
|
469
|
+
_Unavailable
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
template <typename _Tp, template <typename> class _IsTriviallyAvailable, template <typename> class _IsAvailable>
|
|
473
|
+
constexpr _Trait __trait =
|
|
474
|
+
_IsTriviallyAvailable<_Tp>::value ? _Trait::_TriviallyAvailable
|
|
475
|
+
: _IsAvailable<_Tp>::value
|
|
476
|
+
? _Trait::_Available
|
|
477
|
+
: _Trait::_Unavailable;
|
|
478
|
+
|
|
479
|
+
_CCCL_API constexpr _Trait __common_trait(initializer_list<_Trait> __traits)
|
|
480
|
+
{
|
|
481
|
+
_Trait __result = _Trait::_TriviallyAvailable;
|
|
482
|
+
for (_Trait __t : __traits)
|
|
483
|
+
{
|
|
484
|
+
if (static_cast<int>(__t) > static_cast<int>(__result))
|
|
485
|
+
{
|
|
486
|
+
__result = __t;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
return __result;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
template <typename... _Types>
|
|
493
|
+
struct __traits
|
|
494
|
+
{
|
|
495
|
+
static constexpr _Trait __copy_constructible_trait =
|
|
496
|
+
__variant_detail::__common_trait({__trait<_Types, is_trivially_copy_constructible, is_copy_constructible>...});
|
|
497
|
+
|
|
498
|
+
static constexpr _Trait __move_constructible_trait =
|
|
499
|
+
__variant_detail::__common_trait({__trait<_Types, is_trivially_move_constructible, is_move_constructible>...});
|
|
500
|
+
|
|
501
|
+
static constexpr _Trait __copy_assignable_trait = __variant_detail::__common_trait(
|
|
502
|
+
{__copy_constructible_trait, __trait<_Types, is_trivially_copy_assignable, is_copy_assignable>...});
|
|
503
|
+
|
|
504
|
+
static constexpr _Trait __move_assignable_trait = __variant_detail::__common_trait(
|
|
505
|
+
{__move_constructible_trait, __trait<_Types, is_trivially_move_assignable, is_move_assignable>...});
|
|
506
|
+
|
|
507
|
+
static constexpr _Trait __destructible_trait =
|
|
508
|
+
__variant_detail::__common_trait({__trait<_Types, is_trivially_destructible, is_destructible>...});
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
namespace __access
|
|
512
|
+
{
|
|
513
|
+
|
|
514
|
+
struct __union
|
|
515
|
+
{
|
|
516
|
+
template <class _Vp>
|
|
517
|
+
_CCCL_API static constexpr auto&& __get_alt(_Vp&& __v, in_place_index_t<0>)
|
|
518
|
+
{
|
|
519
|
+
return ::cuda::std::forward<_Vp>(__v).__head;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
template <class _Vp, size_t _Ip>
|
|
523
|
+
_CCCL_API static constexpr auto&& __get_alt(_Vp&& __v, in_place_index_t<_Ip>)
|
|
524
|
+
{
|
|
525
|
+
return __get_alt(::cuda::std::forward<_Vp>(__v).__tail, in_place_index<_Ip - 1>);
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
struct __base
|
|
530
|
+
{
|
|
531
|
+
template <size_t _Ip, class _Vp>
|
|
532
|
+
_CCCL_API static constexpr auto&& __get_alt(_Vp&& __v)
|
|
533
|
+
{
|
|
534
|
+
return __union::__get_alt(::cuda::std::forward<_Vp>(__v).__data, in_place_index<_Ip>);
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
|
|
538
|
+
struct __variant
|
|
539
|
+
{
|
|
540
|
+
template <size_t _Ip, class _Vp>
|
|
541
|
+
_CCCL_API static constexpr auto&& __get_alt(_Vp&& __v)
|
|
542
|
+
{
|
|
543
|
+
return __base::__get_alt<_Ip>(::cuda::std::forward<_Vp>(__v).__impl_);
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
} // namespace __access
|
|
548
|
+
|
|
549
|
+
namespace __visitation
|
|
550
|
+
{
|
|
551
|
+
struct __variant
|
|
552
|
+
{
|
|
553
|
+
// We need to guard against the final invocation where we have processed all variants
|
|
554
|
+
template <size_t _Remaining, size_t _CurrentVariant, class... _Variants, enable_if_t<_Remaining == 0, int> = 0>
|
|
555
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr size_t __get_runtime_index(const _Variants&...) noexcept
|
|
556
|
+
{
|
|
557
|
+
return 0;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
template <size_t _Remaining,
|
|
561
|
+
size_t _CurrentVariant,
|
|
562
|
+
class _Variant,
|
|
563
|
+
class... _OtherVariants,
|
|
564
|
+
enable_if_t<(_Remaining != 0) && (_CurrentVariant == 0), int> = 0>
|
|
565
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr size_t
|
|
566
|
+
__get_runtime_index(const _Variant& __v, const _OtherVariants&...) noexcept
|
|
567
|
+
{
|
|
568
|
+
return __v.__impl_.index();
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
template <size_t _Remaining,
|
|
572
|
+
size_t _CurrentVariant,
|
|
573
|
+
class _Variant,
|
|
574
|
+
class... _OtherVariants,
|
|
575
|
+
enable_if_t<(_Remaining != 0) && (_CurrentVariant != 0), int> = 0>
|
|
576
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr size_t
|
|
577
|
+
__get_runtime_index(const _Variant&, const _OtherVariants&... __vs) noexcept
|
|
578
|
+
{
|
|
579
|
+
return __get_runtime_index<_Remaining, _CurrentVariant - 1>(__vs...);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
// Terminal function call with all indexes determined
|
|
583
|
+
template <class _Visitor, class... _Vs, size_t... _ProcessedIndices>
|
|
584
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr decltype(auto) __visit_impl(
|
|
585
|
+
integer_sequence<size_t, _ProcessedIndices...>,
|
|
586
|
+
integer_sequence<size_t>,
|
|
587
|
+
const size_t,
|
|
588
|
+
_Visitor&& __visitor,
|
|
589
|
+
_Vs&&... __vs)
|
|
590
|
+
{
|
|
591
|
+
return ::cuda::std::__invoke(
|
|
592
|
+
::cuda::std::forward<_Visitor>(__visitor),
|
|
593
|
+
__access::__base::__get_alt<_ProcessedIndices>(::cuda::std::forward<_Vs>(__vs).__impl_)...);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
template <size_t _CurrentIndex,
|
|
597
|
+
class _Visitor,
|
|
598
|
+
class... _Vs,
|
|
599
|
+
size_t... _ProcessedIndices,
|
|
600
|
+
size_t... _UnprocessedIndices,
|
|
601
|
+
enable_if_t<_CurrentIndex != 0, int> = 0>
|
|
602
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr decltype(auto) __visit_impl(
|
|
603
|
+
integer_sequence<size_t, _ProcessedIndices...>,
|
|
604
|
+
integer_sequence<size_t, _CurrentIndex, _UnprocessedIndices...>,
|
|
605
|
+
const size_t __current_index,
|
|
606
|
+
_Visitor&& __visitor,
|
|
607
|
+
_Vs&&... __vs)
|
|
608
|
+
{
|
|
609
|
+
// We found the right index, move to the next variant
|
|
610
|
+
if (__current_index == _CurrentIndex)
|
|
611
|
+
{
|
|
612
|
+
const size_t __next_index =
|
|
613
|
+
__get_runtime_index<sizeof...(_UnprocessedIndices), sizeof...(_ProcessedIndices) + 1>(__vs...);
|
|
614
|
+
return __visit_impl(
|
|
615
|
+
integer_sequence<size_t, _ProcessedIndices..., _CurrentIndex>{},
|
|
616
|
+
integer_sequence<size_t, _UnprocessedIndices...>{},
|
|
617
|
+
__next_index,
|
|
618
|
+
::cuda::std::forward<_Visitor>(__visitor),
|
|
619
|
+
::cuda::std::forward<_Vs>(__vs)...);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
return __visit_impl(
|
|
623
|
+
integer_sequence<size_t, _ProcessedIndices...>{},
|
|
624
|
+
integer_sequence<size_t, _CurrentIndex - 1, _UnprocessedIndices...>{},
|
|
625
|
+
__current_index,
|
|
626
|
+
::cuda::std::forward<_Visitor>(__visitor),
|
|
627
|
+
::cuda::std::forward<_Vs>(__vs)...);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
_CCCL_BEGIN_NV_DIAG_SUPPRESS(940) // Suppress no return at end of function
|
|
631
|
+
// This overload is needed to tell the compiler that the recursion is indeed limited
|
|
632
|
+
template <class _Visitor, class... _Vs, size_t... _ProcessedIndices, size_t... _UnprocessedIndices>
|
|
633
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr decltype(auto) __visit_impl(
|
|
634
|
+
integer_sequence<size_t, _ProcessedIndices...>,
|
|
635
|
+
integer_sequence<size_t, 0, _UnprocessedIndices...>,
|
|
636
|
+
const size_t __current_index,
|
|
637
|
+
_Visitor&& __visitor,
|
|
638
|
+
_Vs&&... __vs)
|
|
639
|
+
{
|
|
640
|
+
// We found the right index, move to the next variant
|
|
641
|
+
if (__current_index == 0)
|
|
642
|
+
{
|
|
643
|
+
const size_t __next_index =
|
|
644
|
+
__get_runtime_index<sizeof...(_UnprocessedIndices), sizeof...(_ProcessedIndices) + 1>(__vs...);
|
|
645
|
+
return __visit_impl(
|
|
646
|
+
integer_sequence<size_t, _ProcessedIndices..., 0>{},
|
|
647
|
+
integer_sequence<size_t, _UnprocessedIndices...>{},
|
|
648
|
+
__next_index,
|
|
649
|
+
::cuda::std::forward<_Visitor>(__visitor),
|
|
650
|
+
::cuda::std::forward<_Vs>(__vs)...);
|
|
651
|
+
}
|
|
652
|
+
_CCCL_UNREACHABLE();
|
|
653
|
+
}
|
|
654
|
+
_CCCL_END_NV_DIAG_SUPPRESS() // End suppression of no return at end of function
|
|
655
|
+
|
|
656
|
+
template <class _Visitor, class... _Vs>
|
|
657
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr decltype(auto)
|
|
658
|
+
__visit_value(_Visitor&& __visitor, _Vs&&... __vs)
|
|
659
|
+
{
|
|
660
|
+
// NOTE: We use a recursive implementation strategy here. That means we can omit the manual return type checks from
|
|
661
|
+
// the common function pointer implementation, as the compiler will abort if the return types do not match.
|
|
662
|
+
const size_t __first_index = __get_runtime_index<sizeof...(_Vs), 0>(__vs...);
|
|
663
|
+
return __visit_impl(
|
|
664
|
+
integer_sequence<size_t>{},
|
|
665
|
+
integer_sequence<size_t, (remove_cvref_t<_Vs>::__size() - 1)...>{},
|
|
666
|
+
__first_index,
|
|
667
|
+
__make_value_visitor(::cuda::std::forward<_Visitor>(__visitor)),
|
|
668
|
+
::cuda::std::forward<_Vs>(__vs)...);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
template <class _Rp, class _Visitor, class... _Vs>
|
|
672
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr _Rp __visit_value(_Visitor&& __visitor, _Vs&&... __vs)
|
|
673
|
+
{
|
|
674
|
+
const size_t __first_index = __get_runtime_index<sizeof...(_Vs), 0>(__vs...);
|
|
675
|
+
return __visit_impl(
|
|
676
|
+
integer_sequence<size_t>{},
|
|
677
|
+
integer_sequence<size_t, (remove_cvref_t<_Vs>::__size() - 1)...>{},
|
|
678
|
+
__first_index,
|
|
679
|
+
__make_value_visitor<_Rp>(::cuda::std::forward<_Visitor>(__visitor)),
|
|
680
|
+
::cuda::std::forward<_Vs>(__vs)...);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
private:
|
|
684
|
+
template <class _Visitor, class... _Values>
|
|
685
|
+
_CCCL_API static constexpr void __std_visit_exhaustive_visitor_check()
|
|
686
|
+
{
|
|
687
|
+
static_assert(is_invocable_v<_Visitor, _Values...>, "`std::visit` requires the visitor to be exhaustive.");
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
template <class _Visitor>
|
|
691
|
+
struct __value_visitor
|
|
692
|
+
{
|
|
693
|
+
template <class... _Alts>
|
|
694
|
+
_CCCL_API constexpr decltype(auto) operator()(_Alts&&... __alts) const
|
|
695
|
+
{
|
|
696
|
+
__std_visit_exhaustive_visitor_check<_Visitor, decltype((::cuda::std::forward<_Alts>(__alts).__value))...>();
|
|
697
|
+
return ::cuda::std::__invoke(
|
|
698
|
+
::cuda::std::forward<_Visitor>(__visitor), ::cuda::std::forward<_Alts>(__alts).__value...);
|
|
699
|
+
}
|
|
700
|
+
_Visitor&& __visitor;
|
|
701
|
+
};
|
|
702
|
+
|
|
703
|
+
template <class _Rp, class _Visitor>
|
|
704
|
+
struct __value_visitor_return_type
|
|
705
|
+
{
|
|
706
|
+
template <class... _Alts>
|
|
707
|
+
_CCCL_API constexpr _Rp operator()(_Alts&&... __alts) const
|
|
708
|
+
{
|
|
709
|
+
__std_visit_exhaustive_visitor_check<_Visitor, decltype((::cuda::std::forward<_Alts>(__alts).__value))...>();
|
|
710
|
+
return ::cuda::std::__invoke(
|
|
711
|
+
::cuda::std::forward<_Visitor>(__visitor), ::cuda::std::forward<_Alts>(__alts).__value...);
|
|
712
|
+
}
|
|
713
|
+
_Visitor&& __visitor;
|
|
714
|
+
};
|
|
715
|
+
|
|
716
|
+
template <class _Visitor>
|
|
717
|
+
struct __value_visitor_return_type<void, _Visitor>
|
|
718
|
+
{
|
|
719
|
+
template <class... _Alts>
|
|
720
|
+
_CCCL_API constexpr void operator()(_Alts&&... __alts) const
|
|
721
|
+
{
|
|
722
|
+
__std_visit_exhaustive_visitor_check<_Visitor, decltype((::cuda::std::forward<_Alts>(__alts).__value))...>();
|
|
723
|
+
::cuda::std::__invoke(::cuda::std::forward<_Visitor>(__visitor), ::cuda::std::forward<_Alts>(__alts).__value...);
|
|
724
|
+
}
|
|
725
|
+
_Visitor&& __visitor;
|
|
726
|
+
};
|
|
727
|
+
|
|
728
|
+
template <class _Visitor>
|
|
729
|
+
_CCCL_API static constexpr auto __make_value_visitor(_Visitor&& __visitor)
|
|
730
|
+
{
|
|
731
|
+
return __value_visitor<_Visitor>{::cuda::std::forward<_Visitor>(__visitor)};
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
template <class _Rp, class _Visitor>
|
|
735
|
+
_CCCL_API static constexpr auto __make_value_visitor(_Visitor&& __visitor)
|
|
736
|
+
{
|
|
737
|
+
return __value_visitor_return_type<_Rp, _Visitor>{::cuda::std::forward<_Visitor>(__visitor)};
|
|
738
|
+
}
|
|
739
|
+
};
|
|
740
|
+
|
|
741
|
+
} // namespace __visitation
|
|
742
|
+
|
|
743
|
+
template <size_t _Index, class _Tp>
|
|
744
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT __alt
|
|
745
|
+
{
|
|
746
|
+
using __value_type = _Tp;
|
|
747
|
+
|
|
748
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
749
|
+
template <class... _Args>
|
|
750
|
+
_CCCL_API explicit constexpr __alt(in_place_t, _Args&&... __args)
|
|
751
|
+
: __value(::cuda::std::forward<_Args>(__args)...)
|
|
752
|
+
{}
|
|
753
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
754
|
+
constexpr __alt(const __alt&) = default;
|
|
755
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
756
|
+
constexpr __alt(__alt&&) = default;
|
|
757
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
758
|
+
constexpr __alt& operator=(const __alt&) = default;
|
|
759
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
760
|
+
constexpr __alt& operator=(__alt&&) = default;
|
|
761
|
+
|
|
762
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
763
|
+
~__alt() = default;
|
|
764
|
+
|
|
765
|
+
__value_type __value;
|
|
766
|
+
};
|
|
767
|
+
|
|
768
|
+
template <_Trait _DestructibleTrait, size_t _Index, class... _Types>
|
|
769
|
+
union _CCCL_TYPE_VISIBILITY_DEFAULT __union;
|
|
770
|
+
|
|
771
|
+
template <_Trait _DestructibleTrait, size_t _Index>
|
|
772
|
+
union _CCCL_TYPE_VISIBILITY_DEFAULT __union<_DestructibleTrait, _Index>
|
|
773
|
+
{};
|
|
774
|
+
|
|
775
|
+
#define _LIBCUDACXX_VARIANT_UNION_BODY(destructible_trait) \
|
|
776
|
+
\
|
|
777
|
+
private: \
|
|
778
|
+
char __dummy; \
|
|
779
|
+
__alt<_Index, _Tp> __head; \
|
|
780
|
+
__union<destructible_trait, _Index + 1, _Types...> __tail; \
|
|
781
|
+
\
|
|
782
|
+
friend struct __access::__union; \
|
|
783
|
+
\
|
|
784
|
+
public: \
|
|
785
|
+
_CCCL_API explicit constexpr __union(__valueless_t) noexcept \
|
|
786
|
+
: __dummy{} \
|
|
787
|
+
{} \
|
|
788
|
+
\
|
|
789
|
+
template <class... _Args> \
|
|
790
|
+
_CCCL_API explicit constexpr __union(in_place_index_t<0>, _Args&&... __args) \
|
|
791
|
+
: __head(in_place, ::cuda::std::forward<_Args>(__args)...) \
|
|
792
|
+
{} \
|
|
793
|
+
\
|
|
794
|
+
template <size_t _Ip, class... _Args> \
|
|
795
|
+
_CCCL_API explicit constexpr __union(in_place_index_t<_Ip>, _Args&&... __args) \
|
|
796
|
+
: __tail(in_place_index<_Ip - 1>, ::cuda::std::forward<_Args>(__args)...) \
|
|
797
|
+
{} \
|
|
798
|
+
\
|
|
799
|
+
_CCCL_HIDE_FROM_ABI __union(const __union&) = default; \
|
|
800
|
+
_CCCL_HIDE_FROM_ABI __union(__union&&) = default; \
|
|
801
|
+
_CCCL_HIDE_FROM_ABI __union& operator=(const __union&) = default; \
|
|
802
|
+
_CCCL_HIDE_FROM_ABI __union& operator=(__union&&) = default;
|
|
803
|
+
|
|
804
|
+
template <size_t _Index, class _Tp, class... _Types>
|
|
805
|
+
union _CCCL_TYPE_VISIBILITY_DEFAULT __union<_Trait::_TriviallyAvailable, _Index, _Tp, _Types...>
|
|
806
|
+
{
|
|
807
|
+
_LIBCUDACXX_VARIANT_UNION_BODY(_Trait::_TriviallyAvailable)
|
|
808
|
+
_CCCL_HIDE_FROM_ABI ~__union() = default;
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
template <size_t _Index, class _Tp, class... _Types>
|
|
812
|
+
union _CCCL_TYPE_VISIBILITY_DEFAULT __union<_Trait::_Available, _Index, _Tp, _Types...>
|
|
813
|
+
{
|
|
814
|
+
_LIBCUDACXX_VARIANT_UNION_BODY(_Trait::_Available)
|
|
815
|
+
_CCCL_API inline ~__union() {}
|
|
816
|
+
};
|
|
817
|
+
|
|
818
|
+
template <size_t _Index, class _Tp, class... _Types>
|
|
819
|
+
union _CCCL_TYPE_VISIBILITY_DEFAULT __union<_Trait::_Unavailable, _Index, _Tp, _Types...>
|
|
820
|
+
{
|
|
821
|
+
_LIBCUDACXX_VARIANT_UNION_BODY(_Trait::_Unavailable)
|
|
822
|
+
_CCCL_API inline ~__union() = delete;
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
#undef _LIBCUDACXX_VARIANT_UNION_BODY
|
|
826
|
+
|
|
827
|
+
template <_Trait _DestructibleTrait, class... _Types>
|
|
828
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __base
|
|
829
|
+
{
|
|
830
|
+
public:
|
|
831
|
+
using __index_t = __variant_index_t<sizeof...(_Types)>;
|
|
832
|
+
|
|
833
|
+
_CCCL_API explicit constexpr __base(__valueless_t __tag) noexcept
|
|
834
|
+
: __data(__tag)
|
|
835
|
+
, __index(__variant_npos<__index_t>)
|
|
836
|
+
{}
|
|
837
|
+
|
|
838
|
+
template <size_t _Ip, class... _Args>
|
|
839
|
+
_CCCL_API explicit constexpr __base(in_place_index_t<_Ip>, _Args&&... __args)
|
|
840
|
+
: __data(in_place_index<_Ip>, ::cuda::std::forward<_Args>(__args)...)
|
|
841
|
+
, __index(_Ip)
|
|
842
|
+
{}
|
|
843
|
+
|
|
844
|
+
_CCCL_API constexpr bool valueless_by_exception() const noexcept
|
|
845
|
+
{
|
|
846
|
+
return index() == variant_npos;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
_CCCL_API constexpr size_t index() const noexcept
|
|
850
|
+
{
|
|
851
|
+
return __index == __variant_npos<__index_t> ? variant_npos : __index;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
protected:
|
|
855
|
+
_CCCL_API constexpr auto&& __as_base() &
|
|
856
|
+
{
|
|
857
|
+
return *this;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
_CCCL_API constexpr auto&& __as_base() &&
|
|
861
|
+
{
|
|
862
|
+
return ::cuda::std::move(*this);
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
_CCCL_API constexpr auto&& __as_base() const&
|
|
866
|
+
{
|
|
867
|
+
return *this;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
_CCCL_API constexpr auto&& __as_base() const&&
|
|
871
|
+
{
|
|
872
|
+
return ::cuda::std::move(*this);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
_CCCL_API static constexpr size_t __size()
|
|
876
|
+
{
|
|
877
|
+
return sizeof...(_Types);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
__union<_DestructibleTrait, 0, _Types...> __data;
|
|
881
|
+
__index_t __index;
|
|
882
|
+
|
|
883
|
+
friend struct __access::__base;
|
|
884
|
+
};
|
|
885
|
+
|
|
886
|
+
template <class _Traits, _Trait = _Traits::__destructible_trait>
|
|
887
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __dtor;
|
|
888
|
+
|
|
889
|
+
#define _LIBCUDACXX_VARIANT_DESTRUCTOR_BODY(destructible_trait) \
|
|
890
|
+
using __base_type = __base<destructible_trait, _Types...>; \
|
|
891
|
+
using __index_t = typename __base_type::__index_t; \
|
|
892
|
+
\
|
|
893
|
+
public: \
|
|
894
|
+
using __base_type::__base_type; \
|
|
895
|
+
using __base_type::operator=; \
|
|
896
|
+
\
|
|
897
|
+
_CCCL_HIDE_FROM_ABI __dtor(const __dtor&) = default; \
|
|
898
|
+
_CCCL_HIDE_FROM_ABI __dtor(__dtor&&) = default; \
|
|
899
|
+
_CCCL_HIDE_FROM_ABI __dtor& operator=(const __dtor&) = default; \
|
|
900
|
+
_CCCL_HIDE_FROM_ABI __dtor& operator=(__dtor&&) = default;
|
|
901
|
+
|
|
902
|
+
template <class... _Types>
|
|
903
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT
|
|
904
|
+
__dtor<__traits<_Types...>, _Trait::_TriviallyAvailable> : public __base<_Trait::_TriviallyAvailable, _Types...>
|
|
905
|
+
{
|
|
906
|
+
_LIBCUDACXX_VARIANT_DESTRUCTOR_BODY(_Trait::_TriviallyAvailable)
|
|
907
|
+
_CCCL_HIDE_FROM_ABI ~__dtor() = default;
|
|
908
|
+
|
|
909
|
+
protected:
|
|
910
|
+
_CCCL_API inline void __destroy() noexcept
|
|
911
|
+
{
|
|
912
|
+
this->__index = __variant_npos<__index_t>;
|
|
913
|
+
}
|
|
914
|
+
};
|
|
915
|
+
|
|
916
|
+
template <class... _Types>
|
|
917
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT
|
|
918
|
+
__dtor<__traits<_Types...>, _Trait::_Available> : public __base<_Trait::_Available, _Types...>
|
|
919
|
+
{
|
|
920
|
+
struct __visitor
|
|
921
|
+
{
|
|
922
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
923
|
+
template <class _Alt>
|
|
924
|
+
_CCCL_API inline void operator()(_Alt& __alt) const noexcept
|
|
925
|
+
{
|
|
926
|
+
using __alt_type = remove_cvref_t<decltype(__alt)>;
|
|
927
|
+
__alt.~__alt_type();
|
|
928
|
+
}
|
|
929
|
+
};
|
|
930
|
+
|
|
931
|
+
_LIBCUDACXX_VARIANT_DESTRUCTOR_BODY(_Trait::_Available)
|
|
932
|
+
_CCCL_API inline ~__dtor() noexcept
|
|
933
|
+
{
|
|
934
|
+
__destroy();
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
protected:
|
|
938
|
+
_CCCL_API inline void __destroy() noexcept
|
|
939
|
+
{
|
|
940
|
+
if (!this->valueless_by_exception())
|
|
941
|
+
{
|
|
942
|
+
constexpr size_t __np = remove_cvref_t<__dtor>::__size();
|
|
943
|
+
__destroy(integral_constant<size_t, __np - 1>{}, this->__index);
|
|
944
|
+
}
|
|
945
|
+
this->__index = __variant_npos<__index_t>;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
private:
|
|
949
|
+
template <size_t _CurrentIndex>
|
|
950
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN void
|
|
951
|
+
__destroy(integral_constant<size_t, _CurrentIndex>, const size_t __index) noexcept
|
|
952
|
+
{
|
|
953
|
+
if (__index == _CurrentIndex)
|
|
954
|
+
{
|
|
955
|
+
using __alt_type = remove_cvref_t<decltype(__access::__base::__get_alt<_CurrentIndex>(this->__as_base()))>;
|
|
956
|
+
__access::__base::__get_alt<_CurrentIndex>(this->__as_base()).~__alt_type();
|
|
957
|
+
return;
|
|
958
|
+
}
|
|
959
|
+
__destroy(integral_constant<size_t, _CurrentIndex - 1>{}, __index);
|
|
960
|
+
}
|
|
961
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN void __destroy(integral_constant<size_t, 0>, const size_t __index) noexcept
|
|
962
|
+
{
|
|
963
|
+
if (__index == 0)
|
|
964
|
+
{
|
|
965
|
+
using __alt_type = remove_cvref_t<decltype(__access::__base::__get_alt<0>(this->__as_base()))>;
|
|
966
|
+
__access::__base::__get_alt<0>(this->__as_base()).~__alt_type();
|
|
967
|
+
return;
|
|
968
|
+
}
|
|
969
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
970
|
+
_CCCL_UNREACHABLE();
|
|
971
|
+
}
|
|
972
|
+
};
|
|
973
|
+
|
|
974
|
+
template <class... _Types>
|
|
975
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT
|
|
976
|
+
__dtor<__traits<_Types...>, _Trait::_Unavailable> : public __base<_Trait::_Unavailable, _Types...>
|
|
977
|
+
{
|
|
978
|
+
_LIBCUDACXX_VARIANT_DESTRUCTOR_BODY(_Trait::_Unavailable)
|
|
979
|
+
_CCCL_API inline ~__dtor() = delete;
|
|
980
|
+
|
|
981
|
+
protected:
|
|
982
|
+
_CCCL_API inline void __destroy() noexcept = delete;
|
|
983
|
+
};
|
|
984
|
+
|
|
985
|
+
#undef _LIBCUDACXX_VARIANT_DESTRUCTOR_BODY
|
|
986
|
+
|
|
987
|
+
template <class _Traits>
|
|
988
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __ctor : public __dtor<_Traits>
|
|
989
|
+
{
|
|
990
|
+
using __base_type = __dtor<_Traits>;
|
|
991
|
+
|
|
992
|
+
template <size_t _CurrentIndex, class _Rhs>
|
|
993
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr void
|
|
994
|
+
__generic_construct_impl(integral_constant<size_t, _CurrentIndex>, const size_t __index, __ctor& __lhs, _Rhs&& __rhs)
|
|
995
|
+
{
|
|
996
|
+
if (__index == _CurrentIndex)
|
|
997
|
+
{
|
|
998
|
+
::cuda::std::__construct_at(
|
|
999
|
+
::cuda::std::addressof(__access::__base::__get_alt<_CurrentIndex>(__lhs.__as_base())),
|
|
1000
|
+
in_place,
|
|
1001
|
+
__access::__base::__get_alt<_CurrentIndex>(::cuda::std::forward<_Rhs>(__rhs).__as_base()).__value);
|
|
1002
|
+
return;
|
|
1003
|
+
}
|
|
1004
|
+
__generic_construct_impl(
|
|
1005
|
+
integral_constant<size_t, _CurrentIndex - 1>{}, __index, __lhs, ::cuda::std::forward<_Rhs>(__rhs));
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
template <class _Rhs>
|
|
1009
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr void
|
|
1010
|
+
__generic_construct_impl(integral_constant<size_t, 0>, const size_t __index, __ctor& __lhs, _Rhs&& __rhs)
|
|
1011
|
+
{
|
|
1012
|
+
if (__index == 0)
|
|
1013
|
+
{
|
|
1014
|
+
::cuda::std::__construct_at(
|
|
1015
|
+
::cuda::std::addressof(__access::__base::__get_alt<0>(__lhs.__as_base())),
|
|
1016
|
+
in_place,
|
|
1017
|
+
__access::__base::__get_alt<0>(::cuda::std::forward<_Rhs>(__rhs).__as_base()).__value);
|
|
1018
|
+
return;
|
|
1019
|
+
}
|
|
1020
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
1021
|
+
_CCCL_UNREACHABLE();
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
public:
|
|
1025
|
+
using __base_type::__base_type;
|
|
1026
|
+
using __base_type::operator=;
|
|
1027
|
+
|
|
1028
|
+
protected:
|
|
1029
|
+
template <size_t _Ip, class _Tp, class... _Args>
|
|
1030
|
+
_CCCL_API inline static _Tp& __construct_alt(__alt<_Ip, _Tp>& __a, _Args&&... __args)
|
|
1031
|
+
{
|
|
1032
|
+
::cuda::std::__construct_at(::cuda::std::addressof(__a), in_place, ::cuda::std::forward<_Args>(__args)...);
|
|
1033
|
+
return __a.__value;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
template <class _Rhs>
|
|
1037
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static void __generic_construct(__ctor& __lhs, _Rhs&& __rhs)
|
|
1038
|
+
{
|
|
1039
|
+
__lhs.__destroy();
|
|
1040
|
+
if (!__rhs.valueless_by_exception())
|
|
1041
|
+
{
|
|
1042
|
+
constexpr size_t __np = remove_cvref_t<__ctor>::__size();
|
|
1043
|
+
__generic_construct_impl(
|
|
1044
|
+
integral_constant<size_t, __np - 1>{}, __rhs.index(), __lhs, ::cuda::std::forward<_Rhs>(__rhs));
|
|
1045
|
+
__lhs.__index = static_cast<decltype(__lhs.__index)>(__rhs.index());
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
};
|
|
1049
|
+
|
|
1050
|
+
template <class _Traits, _Trait = _Traits::__move_constructible_trait>
|
|
1051
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __move_constructor;
|
|
1052
|
+
|
|
1053
|
+
#define _LIBCUDACXX_VARIANT_MOVE_CONSTRUCTOR(move_constructible_trait, move_constructor) \
|
|
1054
|
+
template <class... _Types> \
|
|
1055
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT \
|
|
1056
|
+
__move_constructor<__traits<_Types...>, move_constructible_trait> : public __ctor<__traits<_Types...>> \
|
|
1057
|
+
{ \
|
|
1058
|
+
using __base_type = __ctor<__traits<_Types...>>; \
|
|
1059
|
+
\
|
|
1060
|
+
public: \
|
|
1061
|
+
using __base_type::__base_type; \
|
|
1062
|
+
using __base_type::operator=; \
|
|
1063
|
+
\
|
|
1064
|
+
_CCCL_HIDE_FROM_ABI __move_constructor(const __move_constructor&) = default; \
|
|
1065
|
+
_CCCL_HIDE_FROM_ABI ~__move_constructor() = default; \
|
|
1066
|
+
_CCCL_HIDE_FROM_ABI __move_constructor& operator=(const __move_constructor&) = default; \
|
|
1067
|
+
_CCCL_HIDE_FROM_ABI __move_constructor& operator=(__move_constructor&&) = default; \
|
|
1068
|
+
move_constructor \
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
_LIBCUDACXX_VARIANT_MOVE_CONSTRUCTOR(_Trait::_TriviallyAvailable,
|
|
1072
|
+
_CCCL_HIDE_FROM_ABI __move_constructor(__move_constructor&& __that) = default;);
|
|
1073
|
+
|
|
1074
|
+
_LIBCUDACXX_VARIANT_MOVE_CONSTRUCTOR(
|
|
1075
|
+
_Trait::_Available,
|
|
1076
|
+
_CCCL_API inline __move_constructor(__move_constructor&& __that) noexcept(
|
|
1077
|
+
__all<is_nothrow_move_constructible_v<_Types>...>::value) : __move_constructor(__valueless_t{}) {
|
|
1078
|
+
this->__generic_construct(*this, ::cuda::std::move(__that));
|
|
1079
|
+
});
|
|
1080
|
+
|
|
1081
|
+
_LIBCUDACXX_VARIANT_MOVE_CONSTRUCTOR(_Trait::_Unavailable, __move_constructor(__move_constructor&&) = delete;);
|
|
1082
|
+
|
|
1083
|
+
#undef _LIBCUDACXX_VARIANT_MOVE_CONSTRUCTOR
|
|
1084
|
+
|
|
1085
|
+
template <class _Traits, _Trait = _Traits::__copy_constructible_trait>
|
|
1086
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __copy_constructor;
|
|
1087
|
+
|
|
1088
|
+
#define _LIBCUDACXX_VARIANT_COPY_CONSTRUCTOR(copy_constructible_trait, copy_constructor) \
|
|
1089
|
+
template <class... _Types> \
|
|
1090
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT \
|
|
1091
|
+
__copy_constructor<__traits<_Types...>, copy_constructible_trait> : public __move_constructor<__traits<_Types...>> \
|
|
1092
|
+
{ \
|
|
1093
|
+
using __base_type = __move_constructor<__traits<_Types...>>; \
|
|
1094
|
+
\
|
|
1095
|
+
public: \
|
|
1096
|
+
using __base_type::__base_type; \
|
|
1097
|
+
using __base_type::operator=; \
|
|
1098
|
+
\
|
|
1099
|
+
_CCCL_HIDE_FROM_ABI __copy_constructor(__copy_constructor&&) = default; \
|
|
1100
|
+
_CCCL_HIDE_FROM_ABI ~__copy_constructor() = default; \
|
|
1101
|
+
_CCCL_HIDE_FROM_ABI __copy_constructor& operator=(const __copy_constructor&) = default; \
|
|
1102
|
+
_CCCL_HIDE_FROM_ABI __copy_constructor& operator=(__copy_constructor&&) = default; \
|
|
1103
|
+
copy_constructor \
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
_LIBCUDACXX_VARIANT_COPY_CONSTRUCTOR(
|
|
1107
|
+
_Trait::_TriviallyAvailable, _CCCL_HIDE_FROM_ABI __copy_constructor(const __copy_constructor& __that) = default;);
|
|
1108
|
+
|
|
1109
|
+
_LIBCUDACXX_VARIANT_COPY_CONSTRUCTOR(
|
|
1110
|
+
_Trait::_Available,
|
|
1111
|
+
_CCCL_API inline __copy_constructor(const __copy_constructor& __that) : __copy_constructor(__valueless_t{}) {
|
|
1112
|
+
this->__generic_construct(*this, __that);
|
|
1113
|
+
});
|
|
1114
|
+
|
|
1115
|
+
_LIBCUDACXX_VARIANT_COPY_CONSTRUCTOR(_Trait::_Unavailable, __copy_constructor(const __copy_constructor&) = delete;);
|
|
1116
|
+
|
|
1117
|
+
#undef _LIBCUDACXX_VARIANT_COPY_CONSTRUCTOR
|
|
1118
|
+
|
|
1119
|
+
template <class _Traits>
|
|
1120
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __assignment : public __copy_constructor<_Traits>
|
|
1121
|
+
{
|
|
1122
|
+
using __base_type = __copy_constructor<_Traits>;
|
|
1123
|
+
|
|
1124
|
+
template <size_t _CurrentIndex, class _Other>
|
|
1125
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN constexpr void
|
|
1126
|
+
__generic_assign(integral_constant<size_t, _CurrentIndex>, const size_t __index, _Other&& __rhs)
|
|
1127
|
+
{
|
|
1128
|
+
if (__index == _CurrentIndex)
|
|
1129
|
+
{
|
|
1130
|
+
this->__assign_alt(
|
|
1131
|
+
__access::__base::__get_alt<_CurrentIndex>(this->__as_base()),
|
|
1132
|
+
__access::__base::__get_alt<_CurrentIndex>(::cuda::std::forward<_Other>(__rhs).__as_base()).__value);
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
this->__generic_assign(integral_constant<size_t, _CurrentIndex - 1>{}, __index, ::cuda::std::forward<_Other>(__rhs));
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
template <class _Other>
|
|
1139
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN constexpr void
|
|
1140
|
+
__generic_assign(integral_constant<size_t, 0>, const size_t __index, _Other&& __rhs)
|
|
1141
|
+
{
|
|
1142
|
+
if (__index == 0)
|
|
1143
|
+
{
|
|
1144
|
+
this->__assign_alt(__access::__base::__get_alt<0>(this->__as_base()),
|
|
1145
|
+
__access::__base::__get_alt<0>(::cuda::std::forward<_Other>(__rhs).__as_base()).__value);
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
1149
|
+
_CCCL_UNREACHABLE();
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
public:
|
|
1153
|
+
using __base_type::__base_type;
|
|
1154
|
+
using __base_type::operator=;
|
|
1155
|
+
|
|
1156
|
+
template <size_t _Ip, class... _Args>
|
|
1157
|
+
_CCCL_API inline auto& __emplace(_Args&&... __args)
|
|
1158
|
+
{
|
|
1159
|
+
this->__destroy();
|
|
1160
|
+
auto& __res =
|
|
1161
|
+
this->__construct_alt(__access::__base::__get_alt<_Ip>(*this), ::cuda::std::forward<_Args>(__args)...);
|
|
1162
|
+
this->__index = _Ip;
|
|
1163
|
+
return __res;
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
protected:
|
|
1167
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1168
|
+
template <size_t _Ip,
|
|
1169
|
+
class _Tp,
|
|
1170
|
+
class _Arg,
|
|
1171
|
+
enable_if_t<is_nothrow_constructible_v<_Tp, _Arg> || !is_nothrow_move_constructible_v<_Tp>, int> = 0>
|
|
1172
|
+
_CCCL_API inline void __assign_alt(__alt<_Ip, _Tp>& __a, _Arg&& __arg)
|
|
1173
|
+
{
|
|
1174
|
+
if (this->index() == _Ip)
|
|
1175
|
+
{
|
|
1176
|
+
__a.__value = ::cuda::std::forward<_Arg>(__arg);
|
|
1177
|
+
}
|
|
1178
|
+
else
|
|
1179
|
+
{
|
|
1180
|
+
this->__emplace<_Ip>(::cuda::std::forward<_Arg>(__arg));
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1185
|
+
template <size_t _Ip,
|
|
1186
|
+
class _Tp,
|
|
1187
|
+
class _Arg,
|
|
1188
|
+
enable_if_t<!is_nothrow_constructible_v<_Tp, _Arg> && is_nothrow_move_constructible_v<_Tp>, int> = 0>
|
|
1189
|
+
_CCCL_API inline void __assign_alt(__alt<_Ip, _Tp>& __a, _Arg&& __arg)
|
|
1190
|
+
{
|
|
1191
|
+
if (this->index() == _Ip)
|
|
1192
|
+
{
|
|
1193
|
+
__a.__value = ::cuda::std::forward<_Arg>(__arg);
|
|
1194
|
+
}
|
|
1195
|
+
else
|
|
1196
|
+
{
|
|
1197
|
+
this->__emplace<_Ip>(_Tp(::cuda::std::forward<_Arg>(__arg)));
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
template <class _That>
|
|
1202
|
+
_CCCL_API inline void __generic_assign(_That&& __that)
|
|
1203
|
+
{
|
|
1204
|
+
if (this->valueless_by_exception() && __that.valueless_by_exception())
|
|
1205
|
+
{
|
|
1206
|
+
// do nothing.
|
|
1207
|
+
}
|
|
1208
|
+
else if (__that.valueless_by_exception())
|
|
1209
|
+
{
|
|
1210
|
+
this->__destroy();
|
|
1211
|
+
}
|
|
1212
|
+
else
|
|
1213
|
+
{
|
|
1214
|
+
constexpr size_t __np = remove_cvref_t<__assignment>::__size();
|
|
1215
|
+
this->__generic_assign(integral_constant<size_t, __np - 1>{}, __that.index(), ::cuda::std::forward<_That>(__that));
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1220
|
+
template <class _Traits, _Trait = _Traits::__move_assignable_trait>
|
|
1221
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __move_assignment;
|
|
1222
|
+
|
|
1223
|
+
#define _LIBCUDACXX_VARIANT_MOVE_ASSIGNMENT(move_assignable_trait, move_assignment) \
|
|
1224
|
+
template <class... _Types> \
|
|
1225
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT \
|
|
1226
|
+
__move_assignment<__traits<_Types...>, move_assignable_trait> : public __assignment<__traits<_Types...>> \
|
|
1227
|
+
{ \
|
|
1228
|
+
using __base_type = __assignment<__traits<_Types...>>; \
|
|
1229
|
+
\
|
|
1230
|
+
public: \
|
|
1231
|
+
using __base_type::__base_type; \
|
|
1232
|
+
using __base_type::operator=; \
|
|
1233
|
+
\
|
|
1234
|
+
_CCCL_HIDE_FROM_ABI __move_assignment(const __move_assignment&) = default; \
|
|
1235
|
+
_CCCL_HIDE_FROM_ABI __move_assignment(__move_assignment&&) = default; \
|
|
1236
|
+
_CCCL_HIDE_FROM_ABI ~__move_assignment() = default; \
|
|
1237
|
+
_CCCL_HIDE_FROM_ABI __move_assignment& operator=(const __move_assignment&) = default; \
|
|
1238
|
+
move_assignment \
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
_LIBCUDACXX_VARIANT_MOVE_ASSIGNMENT(
|
|
1242
|
+
_Trait::_TriviallyAvailable, _CCCL_HIDE_FROM_ABI __move_assignment& operator=(__move_assignment&& __that) = default;);
|
|
1243
|
+
|
|
1244
|
+
_LIBCUDACXX_VARIANT_MOVE_ASSIGNMENT(
|
|
1245
|
+
_Trait::_Available,
|
|
1246
|
+
_CCCL_API inline __move_assignment&
|
|
1247
|
+
operator=(__move_assignment&& __that) noexcept(
|
|
1248
|
+
__all<(is_nothrow_move_constructible_v<_Types> && is_nothrow_move_assignable_v<_Types>) ...>::value) {
|
|
1249
|
+
this->__generic_assign(::cuda::std::move(__that));
|
|
1250
|
+
return *this;
|
|
1251
|
+
});
|
|
1252
|
+
|
|
1253
|
+
_LIBCUDACXX_VARIANT_MOVE_ASSIGNMENT(_Trait::_Unavailable, __move_assignment& operator=(__move_assignment&&) = delete;);
|
|
1254
|
+
|
|
1255
|
+
#undef _LIBCUDACXX_VARIANT_MOVE_ASSIGNMENT
|
|
1256
|
+
|
|
1257
|
+
template <class _Traits, _Trait = _Traits::__copy_assignable_trait>
|
|
1258
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __copy_assignment;
|
|
1259
|
+
|
|
1260
|
+
#define _LIBCUDACXX_VARIANT_COPY_ASSIGNMENT(copy_assignable_trait, copy_assignment) \
|
|
1261
|
+
template <class... _Types> \
|
|
1262
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT \
|
|
1263
|
+
__copy_assignment<__traits<_Types...>, copy_assignable_trait> : public __move_assignment<__traits<_Types...>> \
|
|
1264
|
+
{ \
|
|
1265
|
+
using __base_type = __move_assignment<__traits<_Types...>>; \
|
|
1266
|
+
\
|
|
1267
|
+
public: \
|
|
1268
|
+
using __base_type::__base_type; \
|
|
1269
|
+
using __base_type::operator=; \
|
|
1270
|
+
\
|
|
1271
|
+
_CCCL_HIDE_FROM_ABI __copy_assignment(const __copy_assignment&) = default; \
|
|
1272
|
+
_CCCL_HIDE_FROM_ABI __copy_assignment(__copy_assignment&&) = default; \
|
|
1273
|
+
_CCCL_HIDE_FROM_ABI ~__copy_assignment() = default; \
|
|
1274
|
+
_CCCL_HIDE_FROM_ABI __copy_assignment& operator=(__copy_assignment&&) = default; \
|
|
1275
|
+
copy_assignment \
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
_LIBCUDACXX_VARIANT_COPY_ASSIGNMENT(
|
|
1279
|
+
_Trait::_TriviallyAvailable,
|
|
1280
|
+
_CCCL_HIDE_FROM_ABI __copy_assignment& operator=(const __copy_assignment& __that) = default;);
|
|
1281
|
+
|
|
1282
|
+
_LIBCUDACXX_VARIANT_COPY_ASSIGNMENT(
|
|
1283
|
+
_Trait::_Available, _CCCL_API inline __copy_assignment& operator=(const __copy_assignment& __that) {
|
|
1284
|
+
this->__generic_assign(__that);
|
|
1285
|
+
return *this;
|
|
1286
|
+
});
|
|
1287
|
+
|
|
1288
|
+
_LIBCUDACXX_VARIANT_COPY_ASSIGNMENT(_Trait::_Unavailable,
|
|
1289
|
+
__copy_assignment& operator=(const __copy_assignment&) = delete;);
|
|
1290
|
+
|
|
1291
|
+
#undef _LIBCUDACXX_VARIANT_COPY_ASSIGNMENT
|
|
1292
|
+
|
|
1293
|
+
template <class... _Types>
|
|
1294
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT __impl : public __copy_assignment<__traits<_Types...>>
|
|
1295
|
+
{
|
|
1296
|
+
using __base_type = __copy_assignment<__traits<_Types...>>;
|
|
1297
|
+
|
|
1298
|
+
template <size_t _CurrentIndex>
|
|
1299
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr void
|
|
1300
|
+
__swap_value(integral_constant<size_t, _CurrentIndex>, const size_t __index, __impl& __lhs, __impl& __rhs)
|
|
1301
|
+
{
|
|
1302
|
+
if (__index == _CurrentIndex)
|
|
1303
|
+
{
|
|
1304
|
+
using ::cuda::std::swap;
|
|
1305
|
+
swap(__access::__base::__get_alt<_CurrentIndex>(__lhs.__as_base()).__value,
|
|
1306
|
+
__access::__base::__get_alt<_CurrentIndex>(__rhs.__as_base()).__value);
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1309
|
+
__swap_value(integral_constant<size_t, _CurrentIndex - 1>{}, __index, __lhs, __rhs);
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr void
|
|
1313
|
+
__swap_value(integral_constant<size_t, 0>, const size_t __index, __impl& __lhs, __impl& __rhs)
|
|
1314
|
+
{
|
|
1315
|
+
if (__index == 0)
|
|
1316
|
+
{
|
|
1317
|
+
using ::cuda::std::swap;
|
|
1318
|
+
swap(__access::__base::__get_alt<0>(__lhs.__as_base()).__value,
|
|
1319
|
+
__access::__base::__get_alt<0>(__rhs.__as_base()).__value);
|
|
1320
|
+
return;
|
|
1321
|
+
}
|
|
1322
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
1323
|
+
_CCCL_UNREACHABLE();
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
public:
|
|
1327
|
+
using __base_type::__base_type; // get in_place_index_t constructor & friends
|
|
1328
|
+
_CCCL_HIDE_FROM_ABI __impl(__impl const&) = default;
|
|
1329
|
+
_CCCL_HIDE_FROM_ABI __impl(__impl&&) = default;
|
|
1330
|
+
_CCCL_HIDE_FROM_ABI __impl& operator=(__impl const&) = default;
|
|
1331
|
+
_CCCL_HIDE_FROM_ABI __impl& operator=(__impl&&) = default;
|
|
1332
|
+
|
|
1333
|
+
template <size_t _Ip, class _Arg>
|
|
1334
|
+
_CCCL_API inline void __assign(_Arg&& __arg)
|
|
1335
|
+
{
|
|
1336
|
+
this->__assign_alt(__access::__base::__get_alt<_Ip>(*this), ::cuda::std::forward<_Arg>(__arg));
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
_CCCL_API inline void __swap(__impl& __that)
|
|
1340
|
+
{
|
|
1341
|
+
if (this->valueless_by_exception() && __that.valueless_by_exception())
|
|
1342
|
+
{
|
|
1343
|
+
// do nothing.
|
|
1344
|
+
}
|
|
1345
|
+
else if (this->index() == __that.index())
|
|
1346
|
+
{
|
|
1347
|
+
constexpr size_t __np = remove_cvref_t<__impl>::__size();
|
|
1348
|
+
__swap_value(integral_constant<size_t, __np - 1>{}, this->index(), *this, __that);
|
|
1349
|
+
}
|
|
1350
|
+
else
|
|
1351
|
+
{
|
|
1352
|
+
__impl* __lhs = this;
|
|
1353
|
+
__impl* __rhs = ::cuda::std::addressof(__that);
|
|
1354
|
+
if (__lhs->__move_nothrow() && !__rhs->__move_nothrow())
|
|
1355
|
+
{
|
|
1356
|
+
::cuda::std::swap(__lhs, __rhs);
|
|
1357
|
+
}
|
|
1358
|
+
__impl __tmp(::cuda::std::move(*__rhs));
|
|
1359
|
+
this->__generic_construct(*__rhs, ::cuda::std::move(*__lhs));
|
|
1360
|
+
this->__generic_construct(*__lhs, ::cuda::std::move(__tmp));
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
private:
|
|
1365
|
+
_CCCL_API constexpr bool __move_nothrow() const
|
|
1366
|
+
{
|
|
1367
|
+
constexpr bool __results[] = {is_nothrow_move_constructible_v<_Types>...};
|
|
1368
|
+
return this->valueless_by_exception() || __results[this->index()];
|
|
1369
|
+
}
|
|
1370
|
+
};
|
|
1371
|
+
|
|
1372
|
+
struct __no_narrowing_check
|
|
1373
|
+
{
|
|
1374
|
+
template <class _Dest, class _Source>
|
|
1375
|
+
using _Apply = type_identity<_Dest>;
|
|
1376
|
+
};
|
|
1377
|
+
|
|
1378
|
+
struct __narrowing_check
|
|
1379
|
+
{
|
|
1380
|
+
template <class _Dest, class _Source, bool = __cccl_internal::__is_non_narrowing_convertible<_Dest, _Source>::value>
|
|
1381
|
+
struct __narrowing_check_impl
|
|
1382
|
+
{};
|
|
1383
|
+
|
|
1384
|
+
template <class _Dest, class _Source>
|
|
1385
|
+
struct __narrowing_check_impl<_Dest, _Source, true>
|
|
1386
|
+
{
|
|
1387
|
+
using type = type_identity<_Dest>;
|
|
1388
|
+
};
|
|
1389
|
+
|
|
1390
|
+
template <class _Dest, class _Source>
|
|
1391
|
+
using _Apply _CCCL_NODEBUG_ALIAS = typename __narrowing_check_impl<_Dest, _Source>::type;
|
|
1392
|
+
};
|
|
1393
|
+
|
|
1394
|
+
template <class _Dest, class _Source>
|
|
1395
|
+
using __check_for_narrowing _CCCL_NODEBUG_ALIAS = typename _If<
|
|
1396
|
+
#ifdef _LIBCUDACXX_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT
|
|
1397
|
+
false &&
|
|
1398
|
+
#endif // _LIBCUDACXX_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT
|
|
1399
|
+
is_arithmetic_v<_Dest>,
|
|
1400
|
+
__narrowing_check,
|
|
1401
|
+
__no_narrowing_check>::template _Apply<_Dest, _Source>;
|
|
1402
|
+
|
|
1403
|
+
template <class _Tp, size_t _Idx>
|
|
1404
|
+
struct __overload
|
|
1405
|
+
{
|
|
1406
|
+
template <class _Up>
|
|
1407
|
+
_CCCL_API inline auto operator()(_Tp, _Up&&) const -> __check_for_narrowing<_Tp, _Up>;
|
|
1408
|
+
};
|
|
1409
|
+
|
|
1410
|
+
template <class _Tp, size_t>
|
|
1411
|
+
struct __overload_bool
|
|
1412
|
+
{
|
|
1413
|
+
template <class _Up, class _Ap = remove_cvref_t<_Up>>
|
|
1414
|
+
_CCCL_API inline auto operator()(bool, _Up&&) const -> enable_if_t<is_same_v<_Ap, bool>, type_identity<_Tp>>;
|
|
1415
|
+
};
|
|
1416
|
+
|
|
1417
|
+
template <size_t _Idx>
|
|
1418
|
+
struct __overload<bool, _Idx> : __overload_bool<bool, _Idx>
|
|
1419
|
+
{};
|
|
1420
|
+
template <size_t _Idx>
|
|
1421
|
+
struct __overload<bool const, _Idx> : __overload_bool<bool const, _Idx>
|
|
1422
|
+
{};
|
|
1423
|
+
template <size_t _Idx>
|
|
1424
|
+
struct __overload<bool volatile, _Idx> : __overload_bool<bool volatile, _Idx>
|
|
1425
|
+
{};
|
|
1426
|
+
template <size_t _Idx>
|
|
1427
|
+
struct __overload<bool const volatile, _Idx> : __overload_bool<bool const volatile, _Idx>
|
|
1428
|
+
{};
|
|
1429
|
+
|
|
1430
|
+
template <class... _Bases>
|
|
1431
|
+
struct __all_overloads : _Bases...
|
|
1432
|
+
{
|
|
1433
|
+
_CCCL_API inline void operator()() const;
|
|
1434
|
+
using _Bases::operator()...;
|
|
1435
|
+
};
|
|
1436
|
+
|
|
1437
|
+
template <class IdxSeq>
|
|
1438
|
+
struct __make_overloads_imp;
|
|
1439
|
+
|
|
1440
|
+
template <size_t... _Idx>
|
|
1441
|
+
struct __make_overloads_imp<__tuple_indices<_Idx...>>
|
|
1442
|
+
{
|
|
1443
|
+
template <class... _Types>
|
|
1444
|
+
using _Apply _CCCL_NODEBUG_ALIAS = __all_overloads<__overload<_Types, _Idx>...>;
|
|
1445
|
+
};
|
|
1446
|
+
|
|
1447
|
+
template <class... _Types>
|
|
1448
|
+
using _MakeOverloads _CCCL_NODEBUG_ALIAS =
|
|
1449
|
+
typename __make_overloads_imp<__make_indices_imp<sizeof...(_Types), 0>>::template _Apply<_Types...>;
|
|
1450
|
+
|
|
1451
|
+
template <class _Tp, class... _Types>
|
|
1452
|
+
using __best_match_t = typename invoke_result_t<_MakeOverloads<_Types...>, _Tp, _Tp>::type;
|
|
1453
|
+
|
|
1454
|
+
struct __invalid_variant_constraints
|
|
1455
|
+
{
|
|
1456
|
+
static constexpr bool __constructible = false;
|
|
1457
|
+
static constexpr bool __nothrow_constructible = false;
|
|
1458
|
+
static constexpr bool __assignable = false;
|
|
1459
|
+
static constexpr bool __nothrow_assignable = false;
|
|
1460
|
+
};
|
|
1461
|
+
|
|
1462
|
+
template <class... _Types>
|
|
1463
|
+
struct __variant_constraints
|
|
1464
|
+
{
|
|
1465
|
+
template <class _Arg, class _Tp = __best_match_t<_Arg, _Types...>>
|
|
1466
|
+
struct __match_construct
|
|
1467
|
+
{
|
|
1468
|
+
static constexpr size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value;
|
|
1469
|
+
|
|
1470
|
+
static constexpr bool __constructible = is_constructible_v<_Tp, _Arg>;
|
|
1471
|
+
static constexpr bool __nothrow_constructible = is_nothrow_constructible_v<_Tp, _Arg>;
|
|
1472
|
+
};
|
|
1473
|
+
|
|
1474
|
+
template <size_t _Ip, class... _Args>
|
|
1475
|
+
struct __variadic_construct
|
|
1476
|
+
{
|
|
1477
|
+
using _Tp = variant_alternative_t<_Ip, variant<_Types...>>;
|
|
1478
|
+
|
|
1479
|
+
static constexpr bool __constructible = is_constructible_v<_Tp, _Args...>;
|
|
1480
|
+
static constexpr bool __nothrow_constructible = is_nothrow_constructible_v<_Tp, _Args...>;
|
|
1481
|
+
};
|
|
1482
|
+
|
|
1483
|
+
template <size_t _Ip, class _Up, class... _Args>
|
|
1484
|
+
struct __variadic_ilist_construct
|
|
1485
|
+
{
|
|
1486
|
+
using _Tp = variant_alternative_t<_Ip, variant<_Types...>>;
|
|
1487
|
+
|
|
1488
|
+
static constexpr bool __constructible = is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>;
|
|
1489
|
+
static constexpr bool __nothrow_constructible = is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>;
|
|
1490
|
+
};
|
|
1491
|
+
|
|
1492
|
+
template <class _Arg, class _Tp = __best_match_t<_Arg, _Types...>>
|
|
1493
|
+
struct __match_assign
|
|
1494
|
+
{
|
|
1495
|
+
static constexpr size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value;
|
|
1496
|
+
|
|
1497
|
+
static constexpr bool __assignable = is_assignable_v<_Tp&, _Arg> && is_constructible_v<_Tp, _Arg>;
|
|
1498
|
+
static constexpr bool __nothrow_assignable =
|
|
1499
|
+
is_nothrow_assignable_v<_Tp&, _Arg> && is_nothrow_constructible_v<_Tp, _Arg>;
|
|
1500
|
+
};
|
|
1501
|
+
|
|
1502
|
+
template <bool>
|
|
1503
|
+
struct __swappable
|
|
1504
|
+
{
|
|
1505
|
+
static constexpr bool __is_swappable_v =
|
|
1506
|
+
__all<(is_move_constructible_v<_Types> && is_swappable_v<_Types>) ...>::value;
|
|
1507
|
+
|
|
1508
|
+
static constexpr bool __is_nothrow_swappable_v =
|
|
1509
|
+
__all<(is_nothrow_move_constructible_v<_Types> && is_nothrow_swappable_v<_Types>) ...>::value;
|
|
1510
|
+
};
|
|
1511
|
+
};
|
|
1512
|
+
} // namespace __variant_detail
|
|
1513
|
+
|
|
1514
|
+
template <class... _Types>
|
|
1515
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT variant
|
|
1516
|
+
: private __sfinae_base<__all<is_copy_constructible_v<_Types>...>::value,
|
|
1517
|
+
__all<is_move_constructible_v<_Types>...>::value,
|
|
1518
|
+
__all<(is_copy_constructible_v<_Types> && is_copy_assignable_v<_Types>) ...>::value,
|
|
1519
|
+
__all<(is_move_constructible_v<_Types> && is_move_assignable_v<_Types>) ...>::value>
|
|
1520
|
+
{
|
|
1521
|
+
static_assert(0 < sizeof...(_Types), "variant must consist of at least one alternative.");
|
|
1522
|
+
|
|
1523
|
+
static_assert(__all<!is_array_v<_Types>...>::value, "variant can not have an array type as an alternative.");
|
|
1524
|
+
|
|
1525
|
+
static_assert(__all<!is_reference_v<_Types>...>::value, "variant can not have a reference type as an alternative.");
|
|
1526
|
+
|
|
1527
|
+
static_assert(__all<!is_void_v<_Types>...>::value, "variant can not have a void type as an alternative.");
|
|
1528
|
+
|
|
1529
|
+
using __first_type = variant_alternative_t<0, variant>;
|
|
1530
|
+
using __constraints = __variant_detail::__variant_constraints<_Types...>;
|
|
1531
|
+
|
|
1532
|
+
public:
|
|
1533
|
+
// Needs to be dependent to guard against incomplete types
|
|
1534
|
+
template <bool _Dummy = true,
|
|
1535
|
+
class = enable_if_t<__dependent_type<is_default_constructible<__first_type>, _Dummy>::value>>
|
|
1536
|
+
_CCCL_API constexpr variant() noexcept(is_nothrow_default_constructible_v<__first_type>)
|
|
1537
|
+
: __impl_(in_place_index<0>)
|
|
1538
|
+
{}
|
|
1539
|
+
|
|
1540
|
+
_CCCL_HIDE_FROM_ABI constexpr variant(const variant&) = default;
|
|
1541
|
+
_CCCL_HIDE_FROM_ABI constexpr variant(variant&&) = default;
|
|
1542
|
+
|
|
1543
|
+
template <class _Arg>
|
|
1544
|
+
using __match_construct =
|
|
1545
|
+
_If<!is_same_v<remove_cvref_t<_Arg>, variant> && !__is_cuda_std_inplace_type_v<remove_cvref_t<_Arg>> //
|
|
1546
|
+
&& !__is_cuda_std_inplace_index_v<remove_cvref_t<_Arg>>,
|
|
1547
|
+
typename __constraints::template __match_construct<_Arg>,
|
|
1548
|
+
__variant_detail::__invalid_variant_constraints>;
|
|
1549
|
+
|
|
1550
|
+
// CTAD fails if we do not SFINAE the empty variant away first
|
|
1551
|
+
template <class _Arg,
|
|
1552
|
+
class = enable_if_t<sizeof...(_Types) != 0>,
|
|
1553
|
+
class _Constraints = __match_construct<_Arg>,
|
|
1554
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1555
|
+
_CCCL_API constexpr variant(_Arg&& __arg) noexcept(_Constraints::__nothrow_constructible)
|
|
1556
|
+
: __impl_(in_place_index<_Constraints::_Ip>, ::cuda::std::forward<_Arg>(__arg))
|
|
1557
|
+
{}
|
|
1558
|
+
|
|
1559
|
+
template <size_t _Ip, class... _Args>
|
|
1560
|
+
using __variadic_construct =
|
|
1561
|
+
_If<(_Ip < sizeof...(_Types)),
|
|
1562
|
+
typename __constraints::template __variadic_construct<_Ip, _Args...>,
|
|
1563
|
+
__variant_detail::__invalid_variant_constraints>;
|
|
1564
|
+
|
|
1565
|
+
template <size_t _Ip,
|
|
1566
|
+
class... _Args,
|
|
1567
|
+
class _Constraints = __variadic_construct<_Ip, _Args...>,
|
|
1568
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1569
|
+
_CCCL_API explicit constexpr variant(in_place_index_t<_Ip>,
|
|
1570
|
+
_Args&&... __args) noexcept(_Constraints::__nothrow_constructible)
|
|
1571
|
+
: __impl_(in_place_index<_Ip>, ::cuda::std::forward<_Args>(__args)...)
|
|
1572
|
+
{}
|
|
1573
|
+
|
|
1574
|
+
template <size_t _Ip, class _Up, class... _Args>
|
|
1575
|
+
using __variadic_ilist_construct =
|
|
1576
|
+
_If<(_Ip < sizeof...(_Types)),
|
|
1577
|
+
typename __constraints::template __variadic_ilist_construct<_Ip, _Up, _Args...>,
|
|
1578
|
+
__variant_detail::__invalid_variant_constraints>;
|
|
1579
|
+
|
|
1580
|
+
template <size_t _Ip,
|
|
1581
|
+
class _Up,
|
|
1582
|
+
class... _Args,
|
|
1583
|
+
class _Constraints = __variadic_ilist_construct<_Ip, _Up, _Args...>,
|
|
1584
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1585
|
+
_CCCL_API explicit constexpr variant(in_place_index_t<_Ip>, initializer_list<_Up> __il, _Args&&... __args) noexcept(
|
|
1586
|
+
_Constraints::__nothrow_constructible)
|
|
1587
|
+
: __impl_(in_place_index<_Ip>, __il, ::cuda::std::forward<_Args>(__args)...)
|
|
1588
|
+
{}
|
|
1589
|
+
|
|
1590
|
+
template <class _Tp,
|
|
1591
|
+
class... _Args,
|
|
1592
|
+
size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
|
|
1593
|
+
class _Constraints = __variadic_construct<_Ip, _Args...>,
|
|
1594
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1595
|
+
_CCCL_API explicit constexpr variant(in_place_type_t<_Tp>,
|
|
1596
|
+
_Args&&... __args) noexcept(_Constraints::__nothrow_constructible)
|
|
1597
|
+
: __impl_(in_place_index<_Ip>, ::cuda::std::forward<_Args>(__args)...)
|
|
1598
|
+
{}
|
|
1599
|
+
|
|
1600
|
+
template <class _Tp,
|
|
1601
|
+
class _Up,
|
|
1602
|
+
class... _Args,
|
|
1603
|
+
size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
|
|
1604
|
+
class _Constraints = __variadic_ilist_construct<_Ip, _Up, _Args...>,
|
|
1605
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1606
|
+
_CCCL_API explicit constexpr variant(in_place_type_t<_Tp>, initializer_list<_Up> __il, _Args&&... __args) noexcept(
|
|
1607
|
+
_Constraints::__nothrow_constructible)
|
|
1608
|
+
: __impl_(in_place_index<_Ip>, __il, ::cuda::std::forward<_Args>(__args)...)
|
|
1609
|
+
{}
|
|
1610
|
+
|
|
1611
|
+
_CCCL_HIDE_FROM_ABI ~variant() = default;
|
|
1612
|
+
|
|
1613
|
+
_CCCL_HIDE_FROM_ABI constexpr variant& operator=(const variant&) = default;
|
|
1614
|
+
_CCCL_HIDE_FROM_ABI constexpr variant& operator=(variant&&) = default;
|
|
1615
|
+
|
|
1616
|
+
template <class _Arg>
|
|
1617
|
+
using __match_assign =
|
|
1618
|
+
_If<!is_same_v<remove_cvref_t<_Arg>, variant>,
|
|
1619
|
+
typename __constraints::template __match_assign<_Arg>,
|
|
1620
|
+
__variant_detail::__invalid_variant_constraints>;
|
|
1621
|
+
|
|
1622
|
+
template <class _Arg, class _Constraints = __match_assign<_Arg>, class = enable_if_t<_Constraints::__assignable>>
|
|
1623
|
+
_CCCL_API inline variant& operator=(_Arg&& __arg) noexcept(_Constraints::__nothrow_assignable)
|
|
1624
|
+
{
|
|
1625
|
+
__impl_.template __assign<_Constraints::_Ip>(::cuda::std::forward<_Arg>(__arg));
|
|
1626
|
+
return *this;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
template <size_t _Ip,
|
|
1630
|
+
class... _Args,
|
|
1631
|
+
class _Constraints = __variadic_construct<_Ip, _Args...>,
|
|
1632
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1633
|
+
_CCCL_API inline typename _Constraints::_Tp& emplace(_Args&&... __args)
|
|
1634
|
+
{
|
|
1635
|
+
return __impl_.template __emplace<_Ip>(::cuda::std::forward<_Args>(__args)...);
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
template <size_t _Ip,
|
|
1639
|
+
class _Up,
|
|
1640
|
+
class... _Args,
|
|
1641
|
+
class _Constraints = __variadic_ilist_construct<_Ip, _Up, _Args...>,
|
|
1642
|
+
class = enable_if_t<_Constraints::__constructible>>
|
|
1643
|
+
_CCCL_API inline typename _Constraints::_Tp& emplace(initializer_list<_Up> __il, _Args&&... __args)
|
|
1644
|
+
{
|
|
1645
|
+
return __impl_.template __emplace<_Ip>(__il, ::cuda::std::forward<_Args>(__args)...);
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
template <class _Tp,
|
|
1649
|
+
class... _Args,
|
|
1650
|
+
size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
|
|
1651
|
+
enable_if_t<is_constructible_v<_Tp, _Args...>, int> = 0>
|
|
1652
|
+
_CCCL_API inline _Tp& emplace(_Args&&... __args)
|
|
1653
|
+
{
|
|
1654
|
+
return __impl_.template __emplace<_Ip>(::cuda::std::forward<_Args>(__args)...);
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
template <class _Tp,
|
|
1658
|
+
class _Up,
|
|
1659
|
+
class... _Args,
|
|
1660
|
+
size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
|
|
1661
|
+
enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>, int> = 0>
|
|
1662
|
+
_CCCL_API inline _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args)
|
|
1663
|
+
{
|
|
1664
|
+
return __impl_.template __emplace<_Ip>(__il, ::cuda::std::forward<_Args>(__args)...);
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
_CCCL_API constexpr bool valueless_by_exception() const noexcept
|
|
1668
|
+
{
|
|
1669
|
+
return __impl_.valueless_by_exception();
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
_CCCL_API constexpr size_t index() const noexcept
|
|
1673
|
+
{
|
|
1674
|
+
return __impl_.index();
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
// Needs to be dependent to guard against incomplete types
|
|
1678
|
+
template <bool _Dummy>
|
|
1679
|
+
using __swap_constraint =
|
|
1680
|
+
__dependent_type<typename __variant_detail::__variant_constraints<_Types...>::template __swappable<_Dummy>, _Dummy>;
|
|
1681
|
+
|
|
1682
|
+
template <bool _Dummy = true,
|
|
1683
|
+
class _Constraint = __swap_constraint<_Dummy>,
|
|
1684
|
+
class = enable_if_t<_Constraint::__is_swappable_v>>
|
|
1685
|
+
_CCCL_API inline void swap(variant& __that) noexcept(_Constraint::__is_nothrow_swappable_v)
|
|
1686
|
+
{
|
|
1687
|
+
__impl_.__swap(__that.__impl_);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
_CCCL_API static constexpr size_t __size() noexcept
|
|
1691
|
+
{
|
|
1692
|
+
return sizeof...(_Types);
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
private:
|
|
1696
|
+
__variant_detail::__impl<_Types...> __impl_;
|
|
1697
|
+
|
|
1698
|
+
friend struct __variant_detail::__access::__variant;
|
|
1699
|
+
friend struct __variant_detail::__visitation::__variant;
|
|
1700
|
+
};
|
|
1701
|
+
|
|
1702
|
+
template <size_t _Ip, class... _Types>
|
|
1703
|
+
_CCCL_API constexpr bool __holds_alternative(const variant<_Types...>& __v) noexcept
|
|
1704
|
+
{
|
|
1705
|
+
return __v.index() == _Ip;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
template <class _Tp, class... _Types>
|
|
1709
|
+
_CCCL_API constexpr bool holds_alternative(const variant<_Types...>& __v) noexcept
|
|
1710
|
+
{
|
|
1711
|
+
return ::cuda::std::__holds_alternative<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
template <size_t _Ip, class _Vp>
|
|
1715
|
+
_CCCL_API constexpr auto&& __generic_get(_Vp&& __v)
|
|
1716
|
+
{
|
|
1717
|
+
using __variant_detail::__access::__variant;
|
|
1718
|
+
if (!::cuda::std::__holds_alternative<_Ip>(__v))
|
|
1719
|
+
{
|
|
1720
|
+
::cuda::std::__throw_bad_variant_access();
|
|
1721
|
+
}
|
|
1722
|
+
return __variant::__get_alt<_Ip>(::cuda::std::forward<_Vp>(__v)).__value;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
template <size_t _Ip, class... _Types>
|
|
1726
|
+
_CCCL_API constexpr variant_alternative_t<_Ip, variant<_Types...>>& get(variant<_Types...>& __v)
|
|
1727
|
+
{
|
|
1728
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1729
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1730
|
+
return ::cuda::std::__generic_get<_Ip>(__v);
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
template <size_t _Ip, class... _Types>
|
|
1734
|
+
_CCCL_API constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get(variant<_Types...>&& __v)
|
|
1735
|
+
{
|
|
1736
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1737
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1738
|
+
return ::cuda::std::__generic_get<_Ip>(::cuda::std::move(__v));
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
template <size_t _Ip, class... _Types>
|
|
1742
|
+
_CCCL_API constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get(const variant<_Types...>& __v)
|
|
1743
|
+
{
|
|
1744
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1745
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1746
|
+
return ::cuda::std::__generic_get<_Ip>(__v);
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
template <size_t _Ip, class... _Types>
|
|
1750
|
+
_CCCL_API constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get(const variant<_Types...>&& __v)
|
|
1751
|
+
{
|
|
1752
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1753
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1754
|
+
return ::cuda::std::__generic_get<_Ip>(::cuda::std::move(__v));
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
template <class _Tp, class... _Types>
|
|
1758
|
+
_CCCL_API constexpr _Tp& get(variant<_Types...>& __v)
|
|
1759
|
+
{
|
|
1760
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1761
|
+
return ::cuda::std::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
1762
|
+
}
|
|
1763
|
+
|
|
1764
|
+
template <class _Tp, class... _Types>
|
|
1765
|
+
_CCCL_API constexpr _Tp&& get(variant<_Types...>&& __v)
|
|
1766
|
+
{
|
|
1767
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1768
|
+
return ::cuda::std::get<__find_exactly_one_t<_Tp, _Types...>::value>(::cuda::std::move(__v));
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
template <class _Tp, class... _Types>
|
|
1772
|
+
_CCCL_API constexpr const _Tp& get(const variant<_Types...>& __v)
|
|
1773
|
+
{
|
|
1774
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1775
|
+
return ::cuda::std::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
template <class _Tp, class... _Types>
|
|
1779
|
+
_CCCL_API constexpr const _Tp&& get(const variant<_Types...>&& __v)
|
|
1780
|
+
{
|
|
1781
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1782
|
+
return ::cuda::std::get<__find_exactly_one_t<_Tp, _Types...>::value>(::cuda::std::move(__v));
|
|
1783
|
+
}
|
|
1784
|
+
|
|
1785
|
+
template <size_t _Ip, class _Vp>
|
|
1786
|
+
_CCCL_API constexpr auto* __generic_get_if(_Vp* __v) noexcept
|
|
1787
|
+
{
|
|
1788
|
+
using __variant_detail::__access::__variant;
|
|
1789
|
+
return __v && ::cuda::std::__holds_alternative<_Ip>(*__v)
|
|
1790
|
+
? ::cuda::std::addressof(__variant::__get_alt<_Ip>(*__v).__value)
|
|
1791
|
+
: nullptr;
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
template <size_t _Ip, class... _Types>
|
|
1795
|
+
_CCCL_API constexpr add_pointer_t<variant_alternative_t<_Ip, variant<_Types...>>>
|
|
1796
|
+
get_if(variant<_Types...>* __v) noexcept
|
|
1797
|
+
{
|
|
1798
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1799
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1800
|
+
return ::cuda::std::__generic_get_if<_Ip>(__v);
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
template <size_t _Ip, class... _Types>
|
|
1804
|
+
_CCCL_API constexpr add_pointer_t<const variant_alternative_t<_Ip, variant<_Types...>>>
|
|
1805
|
+
get_if(const variant<_Types...>* __v) noexcept
|
|
1806
|
+
{
|
|
1807
|
+
static_assert(_Ip < sizeof...(_Types), "");
|
|
1808
|
+
static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>, "");
|
|
1809
|
+
return ::cuda::std::__generic_get_if<_Ip>(__v);
|
|
1810
|
+
}
|
|
1811
|
+
|
|
1812
|
+
template <class _Tp, class... _Types>
|
|
1813
|
+
_CCCL_API constexpr add_pointer_t<_Tp> get_if(variant<_Types...>* __v) noexcept
|
|
1814
|
+
{
|
|
1815
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1816
|
+
return ::cuda::std::get_if<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
template <class _Tp, class... _Types>
|
|
1820
|
+
_CCCL_API constexpr add_pointer_t<const _Tp> get_if(const variant<_Types...>* __v) noexcept
|
|
1821
|
+
{
|
|
1822
|
+
static_assert(!is_void_v<_Tp>, "");
|
|
1823
|
+
return ::cuda::std::get_if<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
template <class _Operator>
|
|
1827
|
+
struct __convert_to_bool
|
|
1828
|
+
{
|
|
1829
|
+
template <class _T1, class _T2>
|
|
1830
|
+
_CCCL_API constexpr bool operator()(_T1&& __t1, _T2&& __t2) const
|
|
1831
|
+
{
|
|
1832
|
+
static_assert(
|
|
1833
|
+
is_convertible_v<decltype(_Operator{}(::cuda::std::forward<_T1>(__t1), ::cuda::std::forward<_T2>(__t2))), bool>,
|
|
1834
|
+
"the relational operator does not return a type which is "
|
|
1835
|
+
"implicitly convertible to bool");
|
|
1836
|
+
return _Operator{}(::cuda::std::forward<_T1>(__t1), ::cuda::std::forward<_T2>(__t2));
|
|
1837
|
+
}
|
|
1838
|
+
};
|
|
1839
|
+
|
|
1840
|
+
struct __variant_binary_visitor
|
|
1841
|
+
{
|
|
1842
|
+
template <class _BinaryOp, class _LeftVariant, class _RightVariant>
|
|
1843
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr auto
|
|
1844
|
+
__visit(const size_t __index, _BinaryOp&& __op, const _LeftVariant& __lhs, const _RightVariant& __rhs)
|
|
1845
|
+
{
|
|
1846
|
+
return __visit(integral_constant<size_t, variant_size_v<_LeftVariant> - 1>{},
|
|
1847
|
+
__index,
|
|
1848
|
+
::cuda::std::forward<_BinaryOp>(__op),
|
|
1849
|
+
__lhs,
|
|
1850
|
+
__rhs);
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
private:
|
|
1854
|
+
template <size_t _CurrentIndex, class _BinaryOp, class _LeftVariant, class _RightVariant>
|
|
1855
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr auto
|
|
1856
|
+
__visit(integral_constant<size_t, _CurrentIndex>,
|
|
1857
|
+
const size_t __index,
|
|
1858
|
+
_BinaryOp&& __op,
|
|
1859
|
+
const _LeftVariant& __lhs,
|
|
1860
|
+
const _RightVariant& __rhs)
|
|
1861
|
+
{
|
|
1862
|
+
if (__index == _CurrentIndex)
|
|
1863
|
+
{
|
|
1864
|
+
return __op(::cuda::std::get<_CurrentIndex>(__lhs), ::cuda::std::get<_CurrentIndex>(__rhs));
|
|
1865
|
+
}
|
|
1866
|
+
return __visit(
|
|
1867
|
+
integral_constant<size_t, _CurrentIndex - 1>{}, __index, ::cuda::std::forward<_BinaryOp>(__op), __lhs, __rhs);
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
template <class _BinaryOp, class _LeftVariant, class _RightVariant>
|
|
1871
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr auto
|
|
1872
|
+
__visit(integral_constant<size_t, 0>,
|
|
1873
|
+
const size_t __index,
|
|
1874
|
+
_BinaryOp&& __op,
|
|
1875
|
+
const _LeftVariant& __lhs,
|
|
1876
|
+
const _RightVariant& __rhs)
|
|
1877
|
+
{
|
|
1878
|
+
if (__index == 0)
|
|
1879
|
+
{
|
|
1880
|
+
return __op(::cuda::std::get<0>(__lhs), ::cuda::std::get<0>(__rhs));
|
|
1881
|
+
}
|
|
1882
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
1883
|
+
#if _CCCL_COMPILER(MSVC) // MSVC needs this to be wrapped in a function or it will error
|
|
1884
|
+
::cuda::std::unreachable();
|
|
1885
|
+
#else // ^^^ _CCCL_COMPILER(MSVC) ^^^ / vvv !_CCCL_COMPILER(MSVC) vvv
|
|
1886
|
+
_CCCL_UNREACHABLE();
|
|
1887
|
+
#endif // !_CCCL_COMPILER(MSVC)
|
|
1888
|
+
}
|
|
1889
|
+
};
|
|
1890
|
+
|
|
1891
|
+
template <class... _Types>
|
|
1892
|
+
_CCCL_API constexpr bool operator==(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1893
|
+
{
|
|
1894
|
+
const auto __index = __lhs.index();
|
|
1895
|
+
if (__index != __rhs.index())
|
|
1896
|
+
{
|
|
1897
|
+
return false;
|
|
1898
|
+
}
|
|
1899
|
+
if (__lhs.valueless_by_exception())
|
|
1900
|
+
{
|
|
1901
|
+
return true;
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
return __variant_binary_visitor::__visit(__index, __convert_to_bool<equal_to<>>{}, __lhs, __rhs);
|
|
1905
|
+
}
|
|
1906
|
+
|
|
1907
|
+
#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
1908
|
+
|
|
1909
|
+
template <class... _Types>
|
|
1910
|
+
requires(three_way_comparable<_Types> && ...)
|
|
1911
|
+
_CCCL_API constexpr common_comparison_category_t<compare_three_way_result_t<_Types>...>
|
|
1912
|
+
operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1913
|
+
{
|
|
1914
|
+
using __result_t = common_comparison_category_t<compare_three_way_result_t<_Types>...>;
|
|
1915
|
+
if (__lhs.valueless_by_exception() && __rhs.valueless_by_exception())
|
|
1916
|
+
{
|
|
1917
|
+
return strong_ordering::equal;
|
|
1918
|
+
}
|
|
1919
|
+
if (__lhs.valueless_by_exception())
|
|
1920
|
+
{
|
|
1921
|
+
return strong_ordering::less;
|
|
1922
|
+
}
|
|
1923
|
+
if (__rhs.valueless_by_exception())
|
|
1924
|
+
{
|
|
1925
|
+
return strong_ordering::greater;
|
|
1926
|
+
}
|
|
1927
|
+
if (auto __c = __lhs.index() <=> __rhs.index(); __c != 0)
|
|
1928
|
+
{
|
|
1929
|
+
return __c;
|
|
1930
|
+
}
|
|
1931
|
+
auto __three_way = []<class _Type>(const _Type& __v, const _Type& __w) -> __result_t {
|
|
1932
|
+
return __v <=> __w;
|
|
1933
|
+
};
|
|
1934
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __three_way, __lhs, __rhs);
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
#endif // _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
1938
|
+
|
|
1939
|
+
template <class... _Types>
|
|
1940
|
+
_CCCL_API constexpr bool operator!=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1941
|
+
{
|
|
1942
|
+
if (__lhs.index() != __rhs.index())
|
|
1943
|
+
{
|
|
1944
|
+
return true;
|
|
1945
|
+
}
|
|
1946
|
+
if (__lhs.valueless_by_exception())
|
|
1947
|
+
{
|
|
1948
|
+
return false;
|
|
1949
|
+
}
|
|
1950
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __convert_to_bool<not_equal_to<>>{}, __lhs, __rhs);
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
template <class... _Types>
|
|
1954
|
+
_CCCL_API constexpr bool operator<(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1955
|
+
{
|
|
1956
|
+
if (__rhs.valueless_by_exception())
|
|
1957
|
+
{
|
|
1958
|
+
return false;
|
|
1959
|
+
}
|
|
1960
|
+
if (__lhs.valueless_by_exception())
|
|
1961
|
+
{
|
|
1962
|
+
return true;
|
|
1963
|
+
}
|
|
1964
|
+
if (__lhs.index() < __rhs.index())
|
|
1965
|
+
{
|
|
1966
|
+
return true;
|
|
1967
|
+
}
|
|
1968
|
+
if (__lhs.index() > __rhs.index())
|
|
1969
|
+
{
|
|
1970
|
+
return false;
|
|
1971
|
+
}
|
|
1972
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __convert_to_bool<less<>>{}, __lhs, __rhs);
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
template <class... _Types>
|
|
1976
|
+
_CCCL_API constexpr bool operator>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1977
|
+
{
|
|
1978
|
+
if (__lhs.valueless_by_exception())
|
|
1979
|
+
{
|
|
1980
|
+
return false;
|
|
1981
|
+
}
|
|
1982
|
+
if (__rhs.valueless_by_exception())
|
|
1983
|
+
{
|
|
1984
|
+
return true;
|
|
1985
|
+
}
|
|
1986
|
+
if (__lhs.index() > __rhs.index())
|
|
1987
|
+
{
|
|
1988
|
+
return true;
|
|
1989
|
+
}
|
|
1990
|
+
if (__lhs.index() < __rhs.index())
|
|
1991
|
+
{
|
|
1992
|
+
return false;
|
|
1993
|
+
}
|
|
1994
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __convert_to_bool<greater<>>{}, __lhs, __rhs);
|
|
1995
|
+
}
|
|
1996
|
+
|
|
1997
|
+
template <class... _Types>
|
|
1998
|
+
_CCCL_API constexpr bool operator<=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
1999
|
+
{
|
|
2000
|
+
if (__lhs.valueless_by_exception())
|
|
2001
|
+
{
|
|
2002
|
+
return true;
|
|
2003
|
+
}
|
|
2004
|
+
if (__rhs.valueless_by_exception())
|
|
2005
|
+
{
|
|
2006
|
+
return false;
|
|
2007
|
+
}
|
|
2008
|
+
if (__lhs.index() < __rhs.index())
|
|
2009
|
+
{
|
|
2010
|
+
return true;
|
|
2011
|
+
}
|
|
2012
|
+
if (__lhs.index() > __rhs.index())
|
|
2013
|
+
{
|
|
2014
|
+
return false;
|
|
2015
|
+
}
|
|
2016
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __convert_to_bool<less_equal<>>{}, __lhs, __rhs);
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
template <class... _Types>
|
|
2020
|
+
_CCCL_API constexpr bool operator>=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs)
|
|
2021
|
+
{
|
|
2022
|
+
if (__rhs.valueless_by_exception())
|
|
2023
|
+
{
|
|
2024
|
+
return true;
|
|
2025
|
+
}
|
|
2026
|
+
if (__lhs.valueless_by_exception())
|
|
2027
|
+
{
|
|
2028
|
+
return false;
|
|
2029
|
+
}
|
|
2030
|
+
if (__lhs.index() > __rhs.index())
|
|
2031
|
+
{
|
|
2032
|
+
return true;
|
|
2033
|
+
}
|
|
2034
|
+
if (__lhs.index() < __rhs.index())
|
|
2035
|
+
{
|
|
2036
|
+
return false;
|
|
2037
|
+
}
|
|
2038
|
+
return __variant_binary_visitor::__visit(__lhs.index(), __convert_to_bool<greater_equal<>>{}, __lhs, __rhs);
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
template <class... _Vs>
|
|
2042
|
+
_CCCL_API constexpr void __throw_if_valueless(_Vs&&... __vs)
|
|
2043
|
+
{
|
|
2044
|
+
[[maybe_unused]] int __unused[] = {
|
|
2045
|
+
(::cuda::std::__as_variant(__vs).valueless_by_exception() ? ::cuda::std::__throw_bad_variant_access() : void(),
|
|
2046
|
+
0)...,
|
|
2047
|
+
0};
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
template <class _Visitor,
|
|
2051
|
+
class... _Vs,
|
|
2052
|
+
typename = void_t<decltype(::cuda::std::__as_variant(::cuda::std::declval<_Vs>()))...>>
|
|
2053
|
+
_CCCL_API constexpr decltype(auto) visit(_Visitor&& __visitor, _Vs&&... __vs)
|
|
2054
|
+
{
|
|
2055
|
+
using __variant_detail::__visitation::__variant;
|
|
2056
|
+
::cuda::std::__throw_if_valueless(::cuda::std::forward<_Vs>(__vs)...);
|
|
2057
|
+
return __variant::__visit_value(::cuda::std::forward<_Visitor>(__visitor), ::cuda::std::forward<_Vs>(__vs)...);
|
|
2058
|
+
}
|
|
2059
|
+
|
|
2060
|
+
template <class _Rp,
|
|
2061
|
+
class _Visitor,
|
|
2062
|
+
class... _Vs,
|
|
2063
|
+
typename = void_t<decltype(::cuda::std::__as_variant(::cuda::std::declval<_Vs>()))...>>
|
|
2064
|
+
_CCCL_API constexpr _Rp visit(_Visitor&& __visitor, _Vs&&... __vs)
|
|
2065
|
+
{
|
|
2066
|
+
using __variant_detail::__visitation::__variant;
|
|
2067
|
+
::cuda::std::__throw_if_valueless(::cuda::std::forward<_Vs>(__vs)...);
|
|
2068
|
+
return __variant::__visit_value<_Rp>(::cuda::std::forward<_Visitor>(__visitor), ::cuda::std::forward<_Vs>(__vs)...);
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
template <class... _Types>
|
|
2072
|
+
_CCCL_API inline auto swap(variant<_Types...>& __lhs, variant<_Types...>& __rhs) noexcept(noexcept(__lhs.swap(__rhs)))
|
|
2073
|
+
-> decltype(__lhs.swap(__rhs))
|
|
2074
|
+
{
|
|
2075
|
+
return __lhs.swap(__rhs);
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
#ifndef __cuda_std__
|
|
2079
|
+
template <class... _Types>
|
|
2080
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT hash<__enable_hash_helper<variant<_Types...>, remove_const_t<_Types>...>>
|
|
2081
|
+
{
|
|
2082
|
+
using argument_type = variant<_Types...>;
|
|
2083
|
+
using result_type = size_t;
|
|
2084
|
+
|
|
2085
|
+
template <size_t _CurrentIndex>
|
|
2086
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static size_t
|
|
2087
|
+
__hash(integral_constant<size_t, _CurrentIndex>, const size_t __index, const argument_type& __v) noexcept
|
|
2088
|
+
{
|
|
2089
|
+
if (__index == _CurrentIndex)
|
|
2090
|
+
{
|
|
2091
|
+
using __value_type = remove_const_t<__type_index_c<_CurrentIndex, _Types...>>;
|
|
2092
|
+
return hash<__value_type>{}(__access::__base::__get_alt<_CurrentIndex>(this->__as_base()).__value);
|
|
2093
|
+
}
|
|
2094
|
+
__hash(integral_constant<size_t, _CurrentIndex - 1>{}, __index, __v);
|
|
2095
|
+
}
|
|
2096
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static size_t
|
|
2097
|
+
__hash(integral_constant<size_t, 0>, const size_t __index, const argument_type& __v) noexcept
|
|
2098
|
+
{
|
|
2099
|
+
if (__index == 0)
|
|
2100
|
+
{
|
|
2101
|
+
using __value_type = remove_const_t<__type_index_c<0, _Types...>>;
|
|
2102
|
+
return hash<__value_type>{}(__access::__base::__get_alt<0>(this->__as_base()).__value);
|
|
2103
|
+
}
|
|
2104
|
+
// We already checked that every variant has a value, so we should never reach this line
|
|
2105
|
+
_CCCL_UNREACHABLE();
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN result_type operator()(const argument_type& __v) const
|
|
2109
|
+
{
|
|
2110
|
+
size_t __res = __v.valueless_by_exception()
|
|
2111
|
+
? 299792458 // Random value chosen by the universe upon creation
|
|
2112
|
+
: __hash(integral_constant<size_t, sizeof...(_Types) - 1>{}, __v.index(), __v);
|
|
2113
|
+
return ::cuda::std::__hash_combine(__res, hash<size_t>{}(__v.index()));
|
|
2114
|
+
}
|
|
2115
|
+
};
|
|
2116
|
+
#endif // __cuda_std__
|
|
2117
|
+
|
|
2118
|
+
// __unchecked_get is the same as ::cuda::std::get, except, it is UB to use it
|
|
2119
|
+
// with the wrong type whereas ::cuda::std::get will throw or returning nullptr.
|
|
2120
|
+
// This makes it faster than ::cuda::std::get.
|
|
2121
|
+
template <size_t _Ip, class _Vp>
|
|
2122
|
+
_CCCL_API constexpr auto&& __unchecked_get(_Vp&& __v) noexcept
|
|
2123
|
+
{
|
|
2124
|
+
using __variant_detail::__access::__variant;
|
|
2125
|
+
return __variant::__get_alt<_Ip>(::cuda::std::forward<_Vp>(__v)).__value;
|
|
2126
|
+
}
|
|
2127
|
+
|
|
2128
|
+
template <class _Tp, class... _Types>
|
|
2129
|
+
_CCCL_API constexpr auto&& __unchecked_get(const variant<_Types...>& __v) noexcept
|
|
2130
|
+
{
|
|
2131
|
+
return ::cuda::std::__unchecked_get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
template <class _Tp, class... _Types>
|
|
2135
|
+
_CCCL_API constexpr auto&& __unchecked_get(variant<_Types...>& __v) noexcept
|
|
2136
|
+
{
|
|
2137
|
+
return ::cuda::std::__unchecked_get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
|
|
2138
|
+
}
|
|
2139
|
+
|
|
2140
|
+
_CCCL_END_NAMESPACE_CUDA_STD
|
|
2141
|
+
|
|
2142
|
+
#include <cuda/std/__cccl/epilogue.h>
|
|
2143
|
+
|
|
2144
|
+
#endif // _LIBCUDACXX_VARIANT
|