cuda-cccl 0.1.3.1.0.dev1486__cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.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 +14 -0
- cuda/cccl/cooperative/__init__.py +3 -0
- cuda/cccl/cooperative/experimental/__init__.py +8 -0
- cuda/cccl/cooperative/experimental/_caching.py +48 -0
- cuda/cccl/cooperative/experimental/_common.py +276 -0
- cuda/cccl/cooperative/experimental/_nvrtc.py +91 -0
- cuda/cccl/cooperative/experimental/_scan_op.py +181 -0
- cuda/cccl/cooperative/experimental/_types.py +953 -0
- cuda/cccl/cooperative/experimental/_typing.py +107 -0
- cuda/cccl/cooperative/experimental/block/__init__.py +33 -0
- cuda/cccl/cooperative/experimental/block/_block_load_store.py +215 -0
- cuda/cccl/cooperative/experimental/block/_block_merge_sort.py +125 -0
- cuda/cccl/cooperative/experimental/block/_block_radix_sort.py +214 -0
- cuda/cccl/cooperative/experimental/block/_block_reduce.py +294 -0
- cuda/cccl/cooperative/experimental/block/_block_scan.py +983 -0
- cuda/cccl/cooperative/experimental/warp/__init__.py +9 -0
- cuda/cccl/cooperative/experimental/warp/_warp_merge_sort.py +98 -0
- cuda/cccl/cooperative/experimental/warp/_warp_reduce.py +153 -0
- cuda/cccl/cooperative/experimental/warp/_warp_scan.py +78 -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 +261 -0
- cuda/cccl/headers/include/cub/agent/agent_batch_memcpy.cuh +1181 -0
- cuda/cccl/headers/include/cub/agent/agent_for.cuh +84 -0
- cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +919 -0
- cuda/cccl/headers/include/cub/agent/agent_merge.cuh +227 -0
- cuda/cccl/headers/include/cub/agent/agent_merge_sort.cuh +752 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_downsweep.cuh +766 -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 +704 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_upsweep.cuh +557 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce.cuh +678 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce_by_key.cuh +804 -0
- cuda/cccl/headers/include/cub/agent/agent_rle.cuh +997 -0
- cuda/cccl/headers/include/cub/agent/agent_scan.cuh +561 -0
- cuda/cccl/headers/include/cub/agent/agent_scan_by_key.cuh +473 -0
- cuda/cccl/headers/include/cub/agent/agent_segmented_radix_sort.cuh +292 -0
- cuda/cccl/headers/include/cub/agent/agent_select_if.cuh +1032 -0
- cuda/cccl/headers/include/cub/agent/agent_sub_warp_merge_sort.cuh +342 -0
- cuda/cccl/headers/include/cub/agent/agent_three_way_partition.cuh +592 -0
- cuda/cccl/headers/include/cub/agent/agent_unique_by_key.cuh +614 -0
- cuda/cccl/headers/include/cub/agent/single_pass_scan_operators.cuh +1346 -0
- cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +965 -0
- cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +1217 -0
- cuda/cccl/headers/include/cub/block/block_exchange.cuh +1306 -0
- cuda/cccl/headers/include/cub/block/block_histogram.cuh +420 -0
- cuda/cccl/headers/include/cub/block/block_load.cuh +1259 -0
- cuda/cccl/headers/include/cub/block/block_merge_sort.cuh +787 -0
- cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +1218 -0
- cuda/cccl/headers/include/cub/block/block_radix_sort.cuh +2193 -0
- cuda/cccl/headers/include/cub/block/block_raking_layout.cuh +150 -0
- cuda/cccl/headers/include/cub/block/block_reduce.cuh +629 -0
- cuda/cccl/headers/include/cub/block/block_run_length_decode.cuh +437 -0
- cuda/cccl/headers/include/cub/block/block_scan.cuh +2600 -0
- cuda/cccl/headers/include/cub/block/block_shuffle.cuh +346 -0
- cuda/cccl/headers/include/cub/block/block_store.cuh +1246 -0
- cuda/cccl/headers/include/cub/block/radix_rank_sort_operations.cuh +620 -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 +259 -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 +60 -0
- cuda/cccl/headers/include/cub/cub.cuh +112 -0
- cuda/cccl/headers/include/cub/detail/array_utils.cuh +77 -0
- cuda/cccl/headers/include/cub/detail/choose_offset.cuh +155 -0
- cuda/cccl/headers/include/cub/detail/detect_cuda_runtime.cuh +93 -0
- cuda/cccl/headers/include/cub/detail/device_double_buffer.cuh +96 -0
- cuda/cccl/headers/include/cub/detail/fast_modulo_division.cuh +246 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_driver.cuh +120 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_runtime.cuh +74 -0
- cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +118 -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 +61 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/object.h +100 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/string.h +71 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/value.h +93 -0
- cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +63 -0
- cuda/cccl/headers/include/cub/detail/rfa.cuh +724 -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 +355 -0
- cuda/cccl/headers/include/cub/detail/type_traits.cuh +206 -0
- cuda/cccl/headers/include/cub/detail/uninitialized_copy.cuh +72 -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 +187 -0
- cuda/cccl/headers/include/cub/device/device_for.cuh +994 -0
- cuda/cccl/headers/include/cub/device/device_histogram.cuh +1507 -0
- cuda/cccl/headers/include/cub/device/device_memcpy.cuh +195 -0
- cuda/cccl/headers/include/cub/device/device_merge.cuh +202 -0
- cuda/cccl/headers/include/cub/device/device_merge_sort.cuh +979 -0
- cuda/cccl/headers/include/cub/device/device_partition.cuh +664 -0
- cuda/cccl/headers/include/cub/device/device_radix_sort.cuh +3431 -0
- cuda/cccl/headers/include/cub/device/device_reduce.cuh +1387 -0
- cuda/cccl/headers/include/cub/device/device_run_length_encode.cuh +368 -0
- cuda/cccl/headers/include/cub/device/device_scan.cuh +1901 -0
- cuda/cccl/headers/include/cub/device/device_segmented_radix_sort.cuh +1496 -0
- cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +1512 -0
- cuda/cccl/headers/include/cub/device/device_segmented_sort.cuh +2811 -0
- cuda/cccl/headers/include/cub/device/device_select.cuh +1224 -0
- cuda/cccl/headers/include/cub/device/device_transform.cuh +313 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_adjacent_difference.cuh +314 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_advance_iterators.cuh +109 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_batch_memcpy.cuh +718 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_common.cuh +45 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_for.cuh +197 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_histogram.cuh +1051 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +305 -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 +1748 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +1316 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_by_key.cuh +625 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +502 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_rle.cuh +548 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan.cuh +497 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan_by_key.cuh +598 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_segmented_sort.cuh +1374 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_select_if.cuh +838 -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 +439 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_three_way_partition.cuh +552 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +397 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_unique_by_key.cuh +543 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +218 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/histogram.cuh +505 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/merge_sort.cuh +338 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/radix_sort.cuh +799 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/reduce.cuh +523 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/scan.cuh +194 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_reduce.cuh +330 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +437 -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 +70 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh +121 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_for.cuh +63 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_histogram.cuh +278 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge.cuh +91 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge_sort.cuh +118 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_radix_sort.cuh +1068 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce.cuh +397 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh +945 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_run_length_encode.cuh +675 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan.cuh +555 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan_by_key.cuh +1013 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_segmented_sort.cuh +249 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_select_if.cuh +1587 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_three_way_partition.cuh +407 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +283 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_unique_by_key.cuh +874 -0
- cuda/cccl/headers/include/cub/grid/grid_even_share.cuh +215 -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 +256 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_input_iterator.cuh +238 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_output_iterator.cuh +252 -0
- cuda/cccl/headers/include/cub/iterator/tex_obj_input_iterator.cuh +322 -0
- cuda/cccl/headers/include/cub/thread/thread_load.cuh +347 -0
- cuda/cccl/headers/include/cub/thread/thread_operators.cuh +629 -0
- cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +504 -0
- cuda/cccl/headers/include/cub/thread/thread_scan.cuh +340 -0
- cuda/cccl/headers/include/cub/thread/thread_search.cuh +198 -0
- cuda/cccl/headers/include/cub/thread/thread_simd.cuh +406 -0
- cuda/cccl/headers/include/cub/thread/thread_sort.cuh +101 -0
- cuda/cccl/headers/include/cub/thread/thread_store.cuh +364 -0
- cuda/cccl/headers/include/cub/util_allocator.cuh +921 -0
- cuda/cccl/headers/include/cub/util_arch.cuh +163 -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 +779 -0
- cuda/cccl/headers/include/cub/util_macro.cuh +91 -0
- cuda/cccl/headers/include/cub/util_math.cuh +115 -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 +1111 -0
- cuda/cccl/headers/include/cub/util_vsmem.cuh +251 -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 +729 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_smem.cuh +405 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_shfl.cuh +688 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_smem.cuh +437 -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 +822 -0
- cuda/cccl/headers/include/cub/warp/warp_scan.cuh +1156 -0
- cuda/cccl/headers/include/cub/warp/warp_store.cuh +520 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property.h +169 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property_encoding.h +172 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr.h +210 -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 +84 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/associate_access_property.h +127 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/createpolicy.h +209 -0
- cuda/cccl/headers/include/cuda/__atomic/atomic.h +145 -0
- cuda/cccl/headers/include/cuda/__barrier/aligned_size.h +61 -0
- cuda/cccl/headers/include/cuda/__barrier/async_contract_fulfillment.h +39 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier.h +66 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_arrive_tx.h +100 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +454 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_expect_tx.h +72 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_native_handle.h +45 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_thread_scope.h +61 -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 +88 -0
- cuda/cccl/headers/include/cuda/__cccl_config +36 -0
- cuda/cccl/headers/include/cuda/__cmath/ceil_div.h +126 -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/neg.h +47 -0
- cuda/cccl/headers/include/cuda/__cmath/pow2.h +74 -0
- cuda/cccl/headers/include/cuda/__cmath/round_down.h +104 -0
- cuda/cccl/headers/include/cuda/__cmath/round_up.h +106 -0
- cuda/cccl/headers/include/cuda/__cmath/uabs.h +57 -0
- cuda/cccl/headers/include/cuda/__execution/determinism.h +90 -0
- cuda/cccl/headers/include/cuda/__execution/require.h +67 -0
- cuda/cccl/headers/include/cuda/__execution/tune.h +62 -0
- cuda/cccl/headers/include/cuda/__functional/address_stability.h +131 -0
- cuda/cccl/headers/include/cuda/__functional/for_each_canceled.h +279 -0
- cuda/cccl/headers/include/cuda/__functional/get_device_address.h +58 -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/get_stream.h +38 -0
- cuda/cccl/headers/include/cuda/__fwd/pipeline.h +37 -0
- cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +261 -0
- cuda/cccl/headers/include/cuda/__iterator/counting_iterator.h +407 -0
- cuda/cccl/headers/include/cuda/__iterator/discard_iterator.h +314 -0
- cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +323 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +481 -0
- cuda/cccl/headers/include/cuda/__latch/latch.h +44 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +457 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +63 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +123 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +51 -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 +98 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/dispatch_memcpy_async.h +162 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/is_local_smem_barrier.h +49 -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 +99 -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 +86 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +94 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_property.h +158 -0
- cuda/cccl/headers/include/cuda/__memory_resource/properties.h +73 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource.h +129 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +653 -0
- cuda/cccl/headers/include/cuda/__numeric/narrow.h +108 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_cast.h +57 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_result.h +43 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx.h +101 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2982 -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 +240 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk.h +193 -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 +52 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor.h +957 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_gather_scatter.h +288 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_multicast.h +596 -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 +1445 -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 +117 -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 +62 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_tensormap_generic.h +101 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_sync_restrict.h +62 -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 +15074 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive.h +385 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_expect_tx.h +176 -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 +94 -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 +137 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait_parity.h +138 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait.h +280 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait_parity.h +282 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_ld_reduce.h +2148 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_red.h +1272 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_st.h +228 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/prmt.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/red_async.h +430 -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 +1830 -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 +105 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_commit.h +81 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_cp.h +612 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_fence.h +44 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_ld.h +4446 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma.h +4061 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma_ws.h +6438 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_shift.h +36 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_st.h +4582 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_wait.h +44 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_cp_fenceproxy.h +67 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_replace.h +750 -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 +275 -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/ptx_dot_variants.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/ptx_helper_functions.h +151 -0
- cuda/cccl/headers/include/cuda/__semaphore/counting_semaphore.h +53 -0
- cuda/cccl/headers/include/cuda/__stream/get_stream.h +97 -0
- cuda/cccl/headers/include/cuda/__stream/stream_ref.h +165 -0
- cuda/cccl/headers/include/cuda/__type_traits/is_floating_point.h +47 -0
- cuda/cccl/headers/include/cuda/__warp/lane_mask.h +326 -0
- cuda/cccl/headers/include/cuda/__warp/warp_match_all.h +66 -0
- cuda/cccl/headers/include/cuda/__warp/warp_shuffle.h +249 -0
- cuda/cccl/headers/include/cuda/access_property +26 -0
- cuda/cccl/headers/include/cuda/annotated_ptr +29 -0
- cuda/cccl/headers/include/cuda/atomic +27 -0
- cuda/cccl/headers/include/cuda/barrier +262 -0
- cuda/cccl/headers/include/cuda/bit +29 -0
- cuda/cccl/headers/include/cuda/cmath +35 -0
- cuda/cccl/headers/include/cuda/discard_memory +61 -0
- cuda/cccl/headers/include/cuda/functional +31 -0
- cuda/cccl/headers/include/cuda/iterator +31 -0
- cuda/cccl/headers/include/cuda/latch +27 -0
- cuda/cccl/headers/include/cuda/mdspan +28 -0
- cuda/cccl/headers/include/cuda/memory +28 -0
- cuda/cccl/headers/include/cuda/memory_resource +41 -0
- cuda/cccl/headers/include/cuda/numeric +28 -0
- cuda/cccl/headers/include/cuda/pipeline +579 -0
- cuda/cccl/headers/include/cuda/ptx +118 -0
- cuda/cccl/headers/include/cuda/semaphore +31 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/adjacent_find.h +60 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/all_of.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/any_of.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/binary_search.h +52 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/clamp.h +48 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp.h +64 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp_ref_type.h +85 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy.h +143 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_backward.h +79 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_if.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_n.h +74 -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 +129 -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 +64 -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/includes.h +92 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap.h +51 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap_until.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_partitioned.h +58 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_permutation.h +252 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted.h +50 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted_until.h +69 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iter_swap.h +82 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iterator_operations.h +188 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lexicographical_compare.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_heap.h +72 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +96 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max_element.h +70 -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 +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax.h +71 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +141 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/mismatch.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move_backward.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/next_permutation.h +89 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/none_of.h +46 -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 +121 -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 +95 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/prev_permutation.h +89 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/push_heap.h +103 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_iterator_concept.h +65 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min.h +99 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min_element.h +69 -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 +264 -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 +123 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_symmetric_difference.h +135 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_union.h +129 -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 +72 -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 +77 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unique_copy.h +156 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_iter.h +96 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_range.h +127 -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 +138 -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 +218 -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 +250 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/common.h +105 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/locked.h +225 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/reference.h +73 -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 +84 -0
- cuda/cccl/headers/include/cuda/std/__bit/bit_cast.h +77 -0
- cuda/cccl/headers/include/cuda/std/__bit/byteswap.h +183 -0
- cuda/cccl/headers/include/cuda/std/__bit/countl.h +167 -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 +124 -0
- cuda/cccl/headers/include/cuda/std/__bit/popcount.h +154 -0
- cuda/cccl/headers/include/cuda/std/__bit/reference.h +1274 -0
- cuda/cccl/headers/include/cuda/std/__bit/rotate.h +94 -0
- cuda/cccl/headers/include/cuda/std/__cccl/architecture.h +78 -0
- cuda/cccl/headers/include/cuda/std/__cccl/assert.h +146 -0
- cuda/cccl/headers/include/cuda/std/__cccl/attributes.h +207 -0
- cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +1343 -0
- cuda/cccl/headers/include/cuda/std/__cccl/compiler.h +216 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_capabilities.h +43 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_toolkit.h +53 -0
- cuda/cccl/headers/include/cuda/std/__cccl/deprecated.h +69 -0
- cuda/cccl/headers/include/cuda/std/__cccl/diagnostic.h +129 -0
- cuda/cccl/headers/include/cuda/std/__cccl/dialect.h +124 -0
- cuda/cccl/headers/include/cuda/std/__cccl/epilogue.h +326 -0
- cuda/cccl/headers/include/cuda/std/__cccl/exceptions.h +35 -0
- cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +68 -0
- cuda/cccl/headers/include/cuda/std/__cccl/extended_data_types.h +129 -0
- cuda/cccl/headers/include/cuda/std/__cccl/is_non_narrowing_convertible.h +73 -0
- cuda/cccl/headers/include/cuda/std/__cccl/os.h +48 -0
- cuda/cccl/headers/include/cuda/std/__cccl/preprocessor.h +1234 -0
- cuda/cccl/headers/include/cuda/std/__cccl/prologue.h +267 -0
- cuda/cccl/headers/include/cuda/std/__cccl/ptx_isa.h +176 -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 +112 -0
- cuda/cccl/headers/include/cuda/std/__charconv/chars_format.h +81 -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_ +30 -0
- cuda/cccl/headers/include/cuda/std/__cmath/abs.h +240 -0
- cuda/cccl/headers/include/cuda/std/__cmath/copysign.h +187 -0
- cuda/cccl/headers/include/cuda/std/__cmath/exponential_functions.h +620 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fpclassify.h +207 -0
- cuda/cccl/headers/include/cuda/std/__cmath/gamma.h +181 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hyperbolic_functions.h +250 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hypot.h +213 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_hyperbolic_functions.h +250 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_trigonometric_functions.h +323 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isfinite.h +163 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isinf.h +201 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +176 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnormal.h +129 -0
- cuda/cccl/headers/include/cuda/std/__cmath/lerp.h +106 -0
- cuda/cccl/headers/include/cuda/std/__cmath/logarithms.h +503 -0
- cuda/cccl/headers/include/cuda/std/__cmath/min_max.h +236 -0
- cuda/cccl/headers/include/cuda/std/__cmath/nvbf16.h +58 -0
- cuda/cccl/headers/include/cuda/std/__cmath/nvfp16.h +58 -0
- cuda/cccl/headers/include/cuda/std/__cmath/roots.h +180 -0
- cuda/cccl/headers/include/cuda/std/__cmath/rounding_functions.h +877 -0
- cuda/cccl/headers/include/cuda/std/__cmath/signbit.h +155 -0
- cuda/cccl/headers/include/cuda/std/__cmath/traits.h +170 -0
- cuda/cccl/headers/include/cuda/std/__cmath/trigonometric_functions.h +292 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +351 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +350 -0
- cuda/cccl/headers/include/cuda/std/__complex/vector_support.h +135 -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 +46 -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 +274 -0
- cuda/cccl/headers/include/cuda/std/__concepts/constructible.h +107 -0
- cuda/cccl/headers/include/cuda/std/__concepts/convertible_to.h +71 -0
- cuda/cccl/headers/include/cuda/std/__concepts/copyable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__concepts/derived_from.h +57 -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 +42 -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 +69 -0
- cuda/cccl/headers/include/cuda/std/__cuda/api_wrapper.h +62 -0
- cuda/cccl/headers/include/cuda/std/__cuda/ensure_current_device.h +72 -0
- cuda/cccl/headers/include/cuda/std/__exception/cuda_error.h +143 -0
- cuda/cccl/headers/include/cuda/std/__exception/terminate.h +73 -0
- cuda/cccl/headers/include/cuda/std/__execution/env.h +436 -0
- cuda/cccl/headers/include/cuda/std/__expected/bad_expected_access.h +127 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected.h +2002 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected_base.h +1078 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpect.h +37 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpected.h +178 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/arithmetic.h +56 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cast.h +809 -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 +172 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/conversion_rank_order.h +103 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/format.h +162 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/fp.h +39 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/mask.h +64 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/native_type.h +81 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/nvfp_types.h +58 -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/__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 +352 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_back.h +88 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_front.h +73 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder1st.h +75 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder2nd.h +75 -0
- cuda/cccl/headers/include/cuda/std/__functional/compose.h +69 -0
- cuda/cccl/headers/include/cuda/std/__functional/default_searcher.h +75 -0
- cuda/cccl/headers/include/cuda/std/__functional/function.h +1277 -0
- cuda/cccl/headers/include/cuda/std/__functional/hash.h +650 -0
- cuda/cccl/headers/include/cuda/std/__functional/identity.h +61 -0
- cuda/cccl/headers/include/cuda/std/__functional/invoke.h +560 -0
- cuda/cccl/headers/include/cuda/std/__functional/is_transparent.h +43 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +67 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fun_ref.h +214 -0
- cuda/cccl/headers/include/cuda/std/__functional/not_fn.h +121 -0
- cuda/cccl/headers/include/cuda/std/__functional/operations.h +534 -0
- cuda/cccl/headers/include/cuda/std/__functional/perfect_forward.h +127 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_binary_function.h +65 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_unary_function.h +64 -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 +67 -0
- cuda/cccl/headers/include/cuda/std/__functional/unwrap_ref.h +56 -0
- cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +278 -0
- cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +35 -0
- cuda/cccl/headers/include/cuda/std/__fwd/array.h +36 -0
- cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +49 -0
- cuda/cccl/headers/include/cuda/std/__fwd/complex.h +34 -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_traits.h +40 -0
- cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +73 -0
- cuda/cccl/headers/include/cuda/std/__fwd/memory_resource.h +37 -0
- cuda/cccl/headers/include/cuda/std/__fwd/pair.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/reference_wrapper.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/span.h +38 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string.h +83 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +59 -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/__internal/cpp_dialect.h +44 -0
- cuda/cccl/headers/include/cuda/std/__internal/features.h +71 -0
- cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +102 -0
- cuda/cccl/headers/include/cuda/std/__iterator/access.h +132 -0
- cuda/cccl/headers/include/cuda/std/__iterator/advance.h +230 -0
- cuda/cccl/headers/include/cuda/std/__iterator/back_insert_iterator.h +103 -0
- cuda/cccl/headers/include/cuda/std/__iterator/bounded_iter.h +264 -0
- cuda/cccl/headers/include/cuda/std/__iterator/concepts.h +608 -0
- cuda/cccl/headers/include/cuda/std/__iterator/counted_iterator.h +469 -0
- cuda/cccl/headers/include/cuda/std/__iterator/data.h +63 -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 +54 -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 +98 -0
- cuda/cccl/headers/include/cuda/std/__iterator/incrementable_traits.h +152 -0
- cuda/cccl/headers/include/cuda/std/__iterator/indirectly_comparable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__iterator/insert_iterator.h +105 -0
- cuda/cccl/headers/include/cuda/std/__iterator/istream_iterator.h +141 -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 +935 -0
- cuda/cccl/headers/include/cuda/std/__iterator/mergeable.h +72 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_iterator.h +401 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_sentinel.h +73 -0
- cuda/cccl/headers/include/cuda/std/__iterator/next.h +102 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostream_iterator.h +99 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostreambuf_iterator.h +101 -0
- cuda/cccl/headers/include/cuda/std/__iterator/permutable.h +54 -0
- cuda/cccl/headers/include/cuda/std/__iterator/prev.h +92 -0
- cuda/cccl/headers/include/cuda/std/__iterator/projected.h +61 -0
- cuda/cccl/headers/include/cuda/std/__iterator/readable_traits.h +185 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_access.h +146 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_iterator.h +615 -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 +88 -0
- cuda/cccl/headers/include/cuda/std/__iterator/wrap_iter.h +259 -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 +781 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conj_if_needed.h +78 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugate_transposed.h +55 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugated.h +140 -0
- cuda/cccl/headers/include/cuda/std/__linalg/scaled.h +134 -0
- cuda/cccl/headers/include/cuda/std/__linalg/transposed.h +328 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/aligned_accessor.h +100 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/concepts.h +139 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/default_accessor.h +74 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/empty_base.h +363 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +765 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_left.h +317 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_right.h +310 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_stride.h +615 -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 +190 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_mapping.h +347 -0
- cuda/cccl/headers/include/cuda/std/__memory/addressof.h +64 -0
- cuda/cccl/headers/include/cuda/std/__memory/align.h +87 -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 +569 -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 +231 -0
- cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +248 -0
- cuda/cccl/headers/include/cuda/std/__memory/destruct_n.h +91 -0
- cuda/cccl/headers/include/cuda/std/__memory/is_sufficiently_aligned.h +43 -0
- cuda/cccl/headers/include/cuda/std/__memory/pointer_traits.h +260 -0
- cuda/cccl/headers/include/cuda/std/__memory/temporary_buffer.h +92 -0
- cuda/cccl/headers/include/cuda/std/__memory/uninitialized_algorithms.h +686 -0
- cuda/cccl/headers/include/cuda/std/__memory/unique_ptr.h +771 -0
- cuda/cccl/headers/include/cuda/std/__memory/uses_allocator.h +55 -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 +49 -0
- cuda/cccl/headers/include/cuda/std/__new_ +29 -0
- cuda/cccl/headers/include/cuda/std/__numeric/accumulate.h +57 -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 +80 -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 +100 -0
- cuda/cccl/headers/include/cuda/std/__numeric/partial_sum.h +70 -0
- cuda/cccl/headers/include/cuda/std/__numeric/reduce.h +61 -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/__ranges/access.h +304 -0
- cuda/cccl/headers/include/cuda/std/__ranges/all.h +97 -0
- cuda/cccl/headers/include/cuda/std/__ranges/concepts.h +313 -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 +111 -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 +77 -0
- cuda/cccl/headers/include/cuda/std/__ranges/from_range.h +36 -0
- cuda/cccl/headers/include/cuda/std/__ranges/iota_view.h +271 -0
- cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +410 -0
- cuda/cccl/headers/include/cuda/std/__ranges/owning_view.h +161 -0
- cuda/cccl/headers/include/cuda/std/__ranges/range_adaptor.h +114 -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 +343 -0
- cuda/cccl/headers/include/cuda/std/__ranges/single_view.h +156 -0
- cuda/cccl/headers/include/cuda/std/__ranges/size.h +200 -0
- cuda/cccl/headers/include/cuda/std/__ranges/subrange.h +513 -0
- cuda/cccl/headers/include/cuda/std/__ranges/take_while_view.h +263 -0
- cuda/cccl/headers/include/cuda/std/__ranges/transform_view.h +531 -0
- cuda/cccl/headers/include/cuda/std/__ranges/unwrap_end.h +53 -0
- cuda/cccl/headers/include/cuda/std/__ranges/view_interface.h +181 -0
- cuda/cccl/headers/include/cuda/std/__ranges/views.h +38 -0
- cuda/cccl/headers/include/cuda/std/__semaphore/atomic_semaphore.h +233 -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 +591 -0
- cuda/cccl/headers/include/cuda/std/__string/helper_functions.h +299 -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 +105 -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 +144 -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 +98 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/sfinae_helpers.h +236 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/structured_bindings.h +216 -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 +90 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like_ext.h +73 -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 +242 -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 +69 -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 +174 -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 +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/has_virtual_destructor.h +51 -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 +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_aggregate.h +44 -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 +83 -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 +68 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_compound.h +54 -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 +214 -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 +43 -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 +73 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_enum.h +68 -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 +81 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_final.h +56 -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 +59 -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 +79 -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 +62 -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 +87 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_with_class.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_polymorphic.h +63 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +119 -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 +84 -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 +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_swappable.h +203 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivial.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_assignable.h +70 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_constructible.h +82 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_constructible.h +61 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copyable.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_default_constructible.h +55 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_destructible.h +73 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_constructible.h +58 -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 +57 -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 +123 -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 +1069 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_set.h +132 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/underlying_type.h +66 -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 +32 -0
- cuda/cccl/headers/include/cuda/std/__utility/cmp.h +116 -0
- cuda/cccl/headers/include/cuda/std/__utility/convert_to_integral.h +103 -0
- cuda/cccl/headers/include/cuda/std/__utility/declval.h +63 -0
- cuda/cccl/headers/include/cuda/std/__utility/exception_guard.h +162 -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 +56 -0
- cuda/cccl/headers/include/cuda/std/__utility/in_place.h +77 -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 +75 -0
- cuda/cccl/headers/include/cuda/std/__utility/pair.h +808 -0
- cuda/cccl/headers/include/cuda/std/__utility/piecewise_construct.h +37 -0
- cuda/cccl/headers/include/cuda/std/__utility/pod_tuple.h +763 -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 +65 -0
- cuda/cccl/headers/include/cuda/std/__utility/to_underlying.h +40 -0
- cuda/cccl/headers/include/cuda/std/__utility/typeid.h +425 -0
- cuda/cccl/headers/include/cuda/std/__utility/unreachable.h +37 -0
- cuda/cccl/headers/include/cuda/std/array +527 -0
- cuda/cccl/headers/include/cuda/std/atomic +823 -0
- cuda/cccl/headers/include/cuda/std/barrier +43 -0
- cuda/cccl/headers/include/cuda/std/bit +35 -0
- cuda/cccl/headers/include/cuda/std/bitset +1026 -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 +25 -0
- cuda/cccl/headers/include/cuda/std/complex +25 -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 +111 -0
- cuda/cccl/headers/include/cuda/std/ctime +147 -0
- cuda/cccl/headers/include/cuda/std/detail/__config +45 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +258 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/algorithm +2692 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/chrono +3689 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/cmath +685 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/complex +1610 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/iosfwd +128 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/optional +1786 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/stdexcept +120 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/tuple +1378 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +2160 -0
- cuda/cccl/headers/include/cuda/std/execution +27 -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 +36 -0
- cuda/cccl/headers/include/cuda/std/inplace_vector +2171 -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 +335 -0
- cuda/cccl/headers/include/cuda/std/numeric +41 -0
- cuda/cccl/headers/include/cuda/std/optional +25 -0
- cuda/cccl/headers/include/cuda/std/ranges +68 -0
- cuda/cccl/headers/include/cuda/std/ratio +417 -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 +640 -0
- cuda/cccl/headers/include/cuda/std/string_view +814 -0
- cuda/cccl/headers/include/cuda/std/tuple +26 -0
- cuda/cccl/headers/include/cuda/std/type_traits +176 -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 +245 -0
- cuda/cccl/headers/include/cuda/stream_ref +54 -0
- cuda/cccl/headers/include/cuda/type_traits +27 -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 +599 -0
- cuda/cccl/headers/include/nv/target +229 -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 +59 -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 +859 -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/algorithm_wrapper.h +37 -0
- cuda/cccl/headers/include/thrust/detail/alignment.h +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +350 -0
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.inl +371 -0
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +45 -0
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.inl +242 -0
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +39 -0
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.inl +137 -0
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +39 -0
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.inl +99 -0
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +53 -0
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.inl +68 -0
- cuda/cccl/headers/include/thrust/detail/allocator/no_throw_allocator.h +76 -0
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +102 -0
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +79 -0
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.inl +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +39 -0
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.inl +98 -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_delete.inl +52 -0
- cuda/cccl/headers/include/thrust/detail/device_free.inl +47 -0
- cuda/cccl/headers/include/thrust/detail/device_malloc.inl +60 -0
- cuda/cccl/headers/include/thrust/detail/device_new.inl +61 -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 +80 -0
- cuda/cccl/headers/include/thrust/detail/execute_with_allocator_fwd.h +61 -0
- cuda/cccl/headers/include/thrust/detail/execution_policy.h +80 -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/integer_math.h +130 -0
- cuda/cccl/headers/include/thrust/detail/internal_functional.h +285 -0
- cuda/cccl/headers/include/thrust/detail/logical.inl +113 -0
- cuda/cccl/headers/include/thrust/detail/malloc_and_free.h +92 -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/memory_wrapper.h +40 -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/mpl/math.h +164 -0
- cuda/cccl/headers/include/thrust/detail/numeric_wrapper.h +37 -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 +217 -0
- cuda/cccl/headers/include/thrust/detail/pointer.inl +172 -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 +189 -0
- cuda/cccl/headers/include/thrust/detail/reduce.inl +377 -0
- cuda/cccl/headers/include/thrust/detail/reference.h +500 -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 +54 -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 +138 -0
- cuda/cccl/headers/include/thrust/detail/temporary_buffer.h +81 -0
- cuda/cccl/headers/include/thrust/detail/transform.inl +250 -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 +131 -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 +60 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/iterator/is_discard_iterator.h +44 -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/util/align.h +59 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.h +630 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.inl +1242 -0
- cuda/cccl/headers/include/thrust/device_allocator.h +134 -0
- cuda/cccl/headers/include/thrust/device_delete.h +59 -0
- cuda/cccl/headers/include/thrust/device_free.h +72 -0
- cuda/cccl/headers/include/thrust/device_make_unique.h +56 -0
- cuda/cccl/headers/include/thrust/device_malloc.h +108 -0
- cuda/cccl/headers/include/thrust/device_malloc_allocator.h +190 -0
- cuda/cccl/headers/include/thrust/device_new.h +91 -0
- cuda/cccl/headers/include/thrust/device_new_allocator.h +179 -0
- cuda/cccl/headers/include/thrust/device_ptr.h +202 -0
- cuda/cccl/headers/include/thrust/device_reference.h +986 -0
- cuda/cccl/headers/include/thrust/device_vector.h +574 -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 +384 -0
- cuda/cccl/headers/include/thrust/extrema.h +657 -0
- cuda/cccl/headers/include/thrust/fill.h +201 -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 +396 -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 +219 -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 +51 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_traversal.h +62 -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 +199 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_traversal_tags.h +50 -0
- cuda/cccl/headers/include/thrust/iterator/detail/minimum_system.h +53 -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 +164 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_adaptor.h +251 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_categories.h +215 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_facade.h +660 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_traits.h +245 -0
- cuda/cccl/headers/include/thrust/iterator/offset_iterator.h +192 -0
- cuda/cccl/headers/include/thrust/iterator/permutation_iterator.h +204 -0
- cuda/cccl/headers/include/thrust/iterator/retag.h +74 -0
- cuda/cccl/headers/include/thrust/iterator/reverse_iterator.h +221 -0
- cuda/cccl/headers/include/thrust/iterator/shuffle_iterator.h +184 -0
- cuda/cccl/headers/include/thrust/iterator/strided_iterator.h +152 -0
- cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +149 -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 +357 -0
- cuda/cccl/headers/include/thrust/logical.h +290 -0
- cuda/cccl/headers/include/thrust/memory.h +395 -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 +526 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_sync_pool.h +118 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_tls_pool.h +68 -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 +526 -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 +65 -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 +102 -0
- cuda/cccl/headers/include/thrust/partition.h +1383 -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 +198 -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 +217 -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 +1112 -0
- cuda/cccl/headers/include/thrust/remove.h +768 -0
- cuda/cccl/headers/include/thrust/replace.h +827 -0
- cuda/cccl/headers/include/thrust/reverse.h +213 -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 +90 -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/par.h +62 -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/detail/vector.inl +130 -0
- cuda/cccl/headers/include/thrust/system/cpp/execution_policy.h +161 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory.h +109 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory_resource.h +75 -0
- cuda/cccl/headers/include/thrust/system/cpp/pointer.h +119 -0
- cuda/cccl/headers/include/thrust/system/cpp/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system/cuda/config.h +123 -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 +129 -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/load_iterator.h +58 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/make_load_iterator.h +60 -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 +630 -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 +210 -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 +113 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/extrema.h +476 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/fill.h +82 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +272 -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 +85 -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/internal/copy_cross_system.h +204 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/internal/copy_device_to_device.h +98 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/iter_swap.h +69 -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 +217 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/par.h +237 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/par_to_seq.h +95 -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 +961 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reduce_by_key.h +1000 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/remove.h +107 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/replace.h +164 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reverse.h +88 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan.h +342 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan_by_key.h +415 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scatter.h +79 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/set_operations.h +1736 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sort.h +482 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/swap_ranges.h +75 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/tabulate.h +75 -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 +403 -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 +94 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_fill.h +91 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique.h +648 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique_by_key.h +311 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/util.h +251 -0
- cuda/cccl/headers/include/thrust/system/cuda/error.h +175 -0
- cuda/cccl/headers/include/thrust/system/cuda/execution_policy.h +39 -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 +140 -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 +48 -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 +64 -0
- cuda/cccl/headers/include/thrust/system/detail/errno.h +125 -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 +59 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.inl +85 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.h +167 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.inl +391 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.inl +70 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.inl +152 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.inl +90 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.inl +66 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.h +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.inl +258 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/fill.h +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.inl +143 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/for_each.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.h +79 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.inl +102 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.inl +63 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.h +66 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.inl +78 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/logical.h +65 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.h +70 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.inl +83 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.h +105 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.inl +154 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.inl +74 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.h +135 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.inl +213 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/per_device_resource.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.h +77 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.inl +106 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.h +89 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.inl +192 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.h +92 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.inl +127 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.h +101 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.inl +181 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.inl +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.h +78 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.inl +141 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.h +78 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.inl +91 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.h +132 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.inl +238 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.h +79 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.inl +91 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/select_system.h +96 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sequence.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sequence.inl +95 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.h +288 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.inl +482 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.h +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.inl +131 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.h +119 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.inl +181 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.h +50 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.inl +82 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.h +47 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.inl +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tag.h +53 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.h +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.inl +88 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform.h +109 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform.inl +185 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.h +56 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.inl +62 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.h +86 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.inl +119 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.inl +172 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.inl +121 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.h +77 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.inl +119 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.h +87 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.inl +132 -0
- cuda/cccl/headers/include/thrust/system/detail/internal/decompose.h +123 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/adjacent_difference.h +76 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/assign_value.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/binary_search.h +142 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.inl +125 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_backward.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_if.h +77 -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 +78 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/extrema.h +116 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/find.h +68 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/for_each.h +80 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/gather.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/general_copy.h +129 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/generate.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/get_value.h +49 -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 +147 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/iter_swap.h +51 -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 +56 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.h +81 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.inl +151 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/mismatch.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/partition.h +309 -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 +70 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reduce_by_key.h +104 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/remove.h +185 -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 +160 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scan_by_key.h +151 -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 +212 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.h +65 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.inl +187 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.h +61 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.inl +362 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.inl +130 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.inl +592 -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 +64 -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 +121 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/unique_by_key.h +112 -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 +113 -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/par.h +62 -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 +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan_by_key.h +30 -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 +259 -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 +160 -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 +120 -0
- cuda/cccl/headers/include/thrust/system/omp/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system/system_error.h +184 -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 +92 -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/par.h +62 -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 +30 -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 +160 -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 +120 -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 +903 -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 +142 -0
- cuda/cccl/headers/include/thrust/type_traits/integer_sequence.h +261 -0
- cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +182 -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 +306 -0
- cuda/cccl/headers/include/thrust/type_traits/logical_metafunctions.h +42 -0
- cuda/cccl/headers/include/thrust/type_traits/unwrap_contiguous_iterator.h +93 -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 +1090 -0
- cuda/cccl/headers/include/thrust/universal_allocator.h +90 -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 +72 -0
- cuda/cccl/parallel/__init__.py +3 -0
- cuda/cccl/parallel/experimental/__init__.py +3 -0
- cuda/cccl/parallel/experimental/_bindings.py +24 -0
- cuda/cccl/parallel/experimental/_bindings.pyi +388 -0
- cuda/cccl/parallel/experimental/_bindings_impl.cpython-313-x86_64-linux-gnu.so +0 -0
- cuda/cccl/parallel/experimental/_bindings_impl.pyx +2158 -0
- cuda/cccl/parallel/experimental/_caching.py +71 -0
- cuda/cccl/parallel/experimental/_cccl_interop.py +371 -0
- cuda/cccl/parallel/experimental/_utils/__init__.py +0 -0
- cuda/cccl/parallel/experimental/_utils/protocols.py +132 -0
- cuda/cccl/parallel/experimental/algorithms/__init__.py +28 -0
- cuda/cccl/parallel/experimental/algorithms/_merge_sort.py +172 -0
- cuda/cccl/parallel/experimental/algorithms/_radix_sort.py +244 -0
- cuda/cccl/parallel/experimental/algorithms/_reduce.py +136 -0
- cuda/cccl/parallel/experimental/algorithms/_scan.py +179 -0
- cuda/cccl/parallel/experimental/algorithms/_segmented_reduce.py +183 -0
- cuda/cccl/parallel/experimental/algorithms/_transform.py +213 -0
- cuda/cccl/parallel/experimental/algorithms/_unique_by_key.py +179 -0
- cuda/cccl/parallel/experimental/cccl/.gitkeep +0 -0
- cuda/cccl/parallel/experimental/cccl/libcccl.c.parallel.so +0 -0
- cuda/cccl/parallel/experimental/iterators/__init__.py +157 -0
- cuda/cccl/parallel/experimental/iterators/_iterators.py +650 -0
- cuda/cccl/parallel/experimental/numba_utils.py +6 -0
- cuda/cccl/parallel/experimental/struct.py +150 -0
- cuda/cccl/parallel/experimental/typing.py +27 -0
- cuda/cccl/py.typed +0 -0
- cuda_cccl-0.1.3.1.0.dev1486.dist-info/METADATA +29 -0
- cuda_cccl-0.1.3.1.0.dev1486.dist-info/RECORD +1819 -0
- cuda_cccl-0.1.3.1.0.dev1486.dist-info/WHEEL +6 -0
- cuda_cccl-0.1.3.1.0.dev1486.dist-info/licenses/LICENSE +1 -0
|
@@ -0,0 +1,1786 @@
|
|
|
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
|
+
// SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES.
|
|
8
|
+
//
|
|
9
|
+
//===----------------------------------------------------------------------===//
|
|
10
|
+
|
|
11
|
+
#ifndef _LIBCUDACXX_OPTIONAL
|
|
12
|
+
#define _LIBCUDACXX_OPTIONAL
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
optional synopsis
|
|
16
|
+
|
|
17
|
+
// C++1z
|
|
18
|
+
|
|
19
|
+
namespace std {
|
|
20
|
+
// 23.6.3, optional for object types
|
|
21
|
+
template <class T> class optional;
|
|
22
|
+
|
|
23
|
+
// 23.6.4, no-value state indicator
|
|
24
|
+
struct nullopt_t{see below };
|
|
25
|
+
inline constexpr nullopt_t nullopt(unspecified );
|
|
26
|
+
|
|
27
|
+
// 23.6.5, class bad_optional_access
|
|
28
|
+
class bad_optional_access;
|
|
29
|
+
|
|
30
|
+
// 23.6.6, relational operators
|
|
31
|
+
template <class T, class U>
|
|
32
|
+
constexpr bool operator==(const optional<T>&, const optional<U>&);
|
|
33
|
+
template <class T, class U>
|
|
34
|
+
constexpr bool operator!=(const optional<T>&, const optional<U>&);
|
|
35
|
+
template <class T, class U>
|
|
36
|
+
constexpr bool operator<(const optional<T>&, const optional<U>&);
|
|
37
|
+
template <class T, class U>
|
|
38
|
+
constexpr bool operator>(const optional<T>&, const optional<U>&);
|
|
39
|
+
template <class T, class U>
|
|
40
|
+
constexpr bool operator<=(const optional<T>&, const optional<U>&);
|
|
41
|
+
template <class T, class U>
|
|
42
|
+
constexpr bool operator>=(const optional<T>&, const optional<U>&);
|
|
43
|
+
|
|
44
|
+
// 23.6.7 comparison with nullopt
|
|
45
|
+
template <class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
|
|
46
|
+
template <class T> constexpr bool operator==(nullopt_t, const optional<T>&) noexcept;
|
|
47
|
+
template <class T> constexpr bool operator!=(const optional<T>&, nullopt_t) noexcept;
|
|
48
|
+
template <class T> constexpr bool operator!=(nullopt_t, const optional<T>&) noexcept;
|
|
49
|
+
template <class T> constexpr bool operator<(const optional<T>&, nullopt_t) noexcept;
|
|
50
|
+
template <class T> constexpr bool operator<(nullopt_t, const optional<T>&) noexcept;
|
|
51
|
+
template <class T> constexpr bool operator<=(const optional<T>&, nullopt_t) noexcept;
|
|
52
|
+
template <class T> constexpr bool operator<=(nullopt_t, const optional<T>&) noexcept;
|
|
53
|
+
template <class T> constexpr bool operator>(const optional<T>&, nullopt_t) noexcept;
|
|
54
|
+
template <class T> constexpr bool operator>(nullopt_t, const optional<T>&) noexcept;
|
|
55
|
+
template <class T> constexpr bool operator>=(const optional<T>&, nullopt_t) noexcept;
|
|
56
|
+
template <class T> constexpr bool operator>=(nullopt_t, const optional<T>&) noexcept;
|
|
57
|
+
|
|
58
|
+
// 23.6.8, comparison with T
|
|
59
|
+
template <class T, class U> constexpr bool operator==(const optional<T>&, const U&);
|
|
60
|
+
template <class T, class U> constexpr bool operator==(const T&, const optional<U>&);
|
|
61
|
+
template <class T, class U> constexpr bool operator!=(const optional<T>&, const U&);
|
|
62
|
+
template <class T, class U> constexpr bool operator!=(const T&, const optional<U>&);
|
|
63
|
+
template <class T, class U> constexpr bool operator<(const optional<T>&, const U&);
|
|
64
|
+
template <class T, class U> constexpr bool operator<(const T&, const optional<U>&);
|
|
65
|
+
template <class T, class U> constexpr bool operator<=(const optional<T>&, const U&);
|
|
66
|
+
template <class T, class U> constexpr bool operator<=(const T&, const optional<U>&);
|
|
67
|
+
template <class T, class U> constexpr bool operator>(const optional<T>&, const U&);
|
|
68
|
+
template <class T, class U> constexpr bool operator>(const T&, const optional<U>&);
|
|
69
|
+
template <class T, class U> constexpr bool operator>=(const optional<T>&, const U&);
|
|
70
|
+
template <class T, class U> constexpr bool operator>=(const T&, const optional<U>&);
|
|
71
|
+
|
|
72
|
+
// 23.6.9, specialized algorithms
|
|
73
|
+
template <class T> void swap(optional<T>&, optional<T>&) noexcept(see below ); // constexpr in C++20
|
|
74
|
+
template <class T> constexpr optional<see below > make_optional(T&&);
|
|
75
|
+
template <class T, class... Args>
|
|
76
|
+
constexpr optional<T> make_optional(Args&&... args);
|
|
77
|
+
template <class T, class U, class... Args>
|
|
78
|
+
constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
|
|
79
|
+
|
|
80
|
+
// 23.6.10, hash support
|
|
81
|
+
template <class T> struct hash;
|
|
82
|
+
template <class T> struct hash<optional<T>>;
|
|
83
|
+
|
|
84
|
+
template <class T> class optional {
|
|
85
|
+
public:
|
|
86
|
+
using value_type = T;
|
|
87
|
+
|
|
88
|
+
// 23.6.3.1, constructors
|
|
89
|
+
constexpr optional() noexcept;
|
|
90
|
+
constexpr optional(nullopt_t) noexcept;
|
|
91
|
+
constexpr optional(const optional &);
|
|
92
|
+
constexpr optional(optional &&) noexcept(see below);
|
|
93
|
+
template <class... Args> constexpr explicit optional(in_place_t, Args &&...);
|
|
94
|
+
template <class U, class... Args>
|
|
95
|
+
constexpr explicit optional(in_place_t, initializer_list<U>, Args &&...);
|
|
96
|
+
template <class U = T>
|
|
97
|
+
constexpr explicit(see-below) optional(U &&);
|
|
98
|
+
template <class U>
|
|
99
|
+
explicit(see-below) optional(const optional<U> &); // constexpr in C++20
|
|
100
|
+
template <class U>
|
|
101
|
+
explicit(see-below) optional(optional<U> &&); // constexpr in C++20
|
|
102
|
+
|
|
103
|
+
// 23.6.3.2, destructor
|
|
104
|
+
~optional(); // constexpr in C++20
|
|
105
|
+
|
|
106
|
+
// 23.6.3.3, assignment
|
|
107
|
+
optional &operator=(nullopt_t) noexcept; // constexpr in C++20
|
|
108
|
+
constexpr optional &operator=(const optional &);
|
|
109
|
+
constexpr optional &operator=(optional &&) noexcept(see below);
|
|
110
|
+
template <class U = T> optional &operator=(U &&); // constexpr in C++20
|
|
111
|
+
template <class U> optional &operator=(const optional<U> &); // constexpr in C++20
|
|
112
|
+
template <class U> optional &operator=(optional<U> &&); // constexpr in C++20
|
|
113
|
+
template <class... Args> T& emplace(Args &&...); // constexpr in C++20
|
|
114
|
+
template <class U, class... Args>
|
|
115
|
+
T& emplace(initializer_list<U>, Args &&...); // constexpr in C++20
|
|
116
|
+
|
|
117
|
+
// 23.6.3.4, swap
|
|
118
|
+
void swap(optional &) noexcept(see below ); // constexpr in C++20
|
|
119
|
+
|
|
120
|
+
// 23.6.3.5, observers
|
|
121
|
+
constexpr T const *operator->() const;
|
|
122
|
+
constexpr T *operator->();
|
|
123
|
+
constexpr T const &operator*() const &;
|
|
124
|
+
constexpr T &operator*() &;
|
|
125
|
+
constexpr T &&operator*() &&;
|
|
126
|
+
constexpr const T &&operator*() const &&;
|
|
127
|
+
constexpr explicit operator bool() const noexcept;
|
|
128
|
+
constexpr bool has_value() const noexcept;
|
|
129
|
+
constexpr T const &value() const &;
|
|
130
|
+
constexpr T &value() &;
|
|
131
|
+
constexpr T &&value() &&;
|
|
132
|
+
constexpr const T &&value() const &&;
|
|
133
|
+
template <class U> constexpr T value_or(U &&) const &;
|
|
134
|
+
template <class U> constexpr T value_or(U &&) &&;
|
|
135
|
+
|
|
136
|
+
// [optional.monadic], monadic operations
|
|
137
|
+
template<class F> constexpr auto and_then(F&& f) &; // since C++23
|
|
138
|
+
template<class F> constexpr auto and_then(F&& f) &&; // since C++23
|
|
139
|
+
template<class F> constexpr auto and_then(F&& f) const&; // since C++23
|
|
140
|
+
template<class F> constexpr auto and_then(F&& f) const&&; // since C++23
|
|
141
|
+
template<class F> constexpr auto transform(F&& f) &; // since C++23
|
|
142
|
+
template<class F> constexpr auto transform(F&& f) &&; // since C++23
|
|
143
|
+
template<class F> constexpr auto transform(F&& f) const&; // since C++23
|
|
144
|
+
template<class F> constexpr auto transform(F&& f) const&&; // since C++23
|
|
145
|
+
template<class F> constexpr optional or_else(F&& f) &&; // since C++23
|
|
146
|
+
template<class F> constexpr optional or_else(F&& f) const&; // since C++23
|
|
147
|
+
|
|
148
|
+
// 23.6.3.6, modifiers
|
|
149
|
+
void reset() noexcept; // constexpr in C++20
|
|
150
|
+
|
|
151
|
+
private:
|
|
152
|
+
T *val; // exposition only
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
template<class T>
|
|
156
|
+
optional(T) -> optional<T>;
|
|
157
|
+
|
|
158
|
+
} // namespace std
|
|
159
|
+
|
|
160
|
+
*/
|
|
161
|
+
|
|
162
|
+
#include <cuda/std/detail/__config>
|
|
163
|
+
|
|
164
|
+
#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
|
|
165
|
+
# pragma GCC system_header
|
|
166
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
|
|
167
|
+
# pragma clang system_header
|
|
168
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
|
|
169
|
+
# pragma system_header
|
|
170
|
+
#endif // no system header
|
|
171
|
+
|
|
172
|
+
#include <cuda/std/__concepts/concept_macros.h>
|
|
173
|
+
#include <cuda/std/__concepts/invocable.h>
|
|
174
|
+
#include <cuda/std/__exception/terminate.h>
|
|
175
|
+
#include <cuda/std/__functional/hash.h>
|
|
176
|
+
#include <cuda/std/__functional/invoke.h>
|
|
177
|
+
#include <cuda/std/__functional/unary_function.h>
|
|
178
|
+
#include <cuda/std/__memory/addressof.h>
|
|
179
|
+
#include <cuda/std/__memory/construct_at.h>
|
|
180
|
+
#include <cuda/std/__memory/pointer_traits.h>
|
|
181
|
+
#include <cuda/std/__new_>
|
|
182
|
+
#include <cuda/std/__tuple_dir/sfinae_helpers.h>
|
|
183
|
+
#include <cuda/std/__type_traits/conjunction.h>
|
|
184
|
+
#include <cuda/std/__type_traits/disjunction.h>
|
|
185
|
+
#include <cuda/std/__type_traits/is_copy_assignable.h>
|
|
186
|
+
#include <cuda/std/__type_traits/is_copy_constructible.h>
|
|
187
|
+
#include <cuda/std/__type_traits/is_move_assignable.h>
|
|
188
|
+
#include <cuda/std/__type_traits/is_move_constructible.h>
|
|
189
|
+
#include <cuda/std/__type_traits/is_object.h>
|
|
190
|
+
#include <cuda/std/__type_traits/is_reference.h>
|
|
191
|
+
#include <cuda/std/__type_traits/is_same.h>
|
|
192
|
+
#include <cuda/std/__type_traits/is_trivially_copy_assignable.h>
|
|
193
|
+
#include <cuda/std/__type_traits/is_trivially_copy_constructible.h>
|
|
194
|
+
#include <cuda/std/__type_traits/is_trivially_destructible.h>
|
|
195
|
+
#include <cuda/std/__type_traits/is_trivially_move_assignable.h>
|
|
196
|
+
#include <cuda/std/__type_traits/is_trivially_move_constructible.h>
|
|
197
|
+
#include <cuda/std/__type_traits/negation.h>
|
|
198
|
+
#include <cuda/std/__type_traits/reference_constructs_from_temporary.h>
|
|
199
|
+
#include <cuda/std/__type_traits/reference_converts_from_temporary.h>
|
|
200
|
+
#include <cuda/std/__type_traits/remove_cv.h>
|
|
201
|
+
#include <cuda/std/__utility/declval.h>
|
|
202
|
+
#include <cuda/std/__utility/forward.h>
|
|
203
|
+
#include <cuda/std/__utility/in_place.h>
|
|
204
|
+
#include <cuda/std/__utility/move.h>
|
|
205
|
+
#include <cuda/std/__utility/swap.h>
|
|
206
|
+
#include <cuda/std/initializer_list>
|
|
207
|
+
|
|
208
|
+
// standard-mandated includes
|
|
209
|
+
#include <cuda/std/version>
|
|
210
|
+
|
|
211
|
+
// [optional.syn]
|
|
212
|
+
#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
213
|
+
# include <cuda/std/compare>
|
|
214
|
+
#endif // _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
|
|
215
|
+
|
|
216
|
+
#if _CCCL_HAS_EXCEPTIONS()
|
|
217
|
+
# ifdef __cpp_lib_optional
|
|
218
|
+
# include <optional>
|
|
219
|
+
# else // ^^^ __cpp_lib_optional ^^^ / vvv !__cpp_lib_optional vvv
|
|
220
|
+
# include <exception>
|
|
221
|
+
# endif // !__cpp_lib_optional
|
|
222
|
+
|
|
223
|
+
# include <cuda/std/__cccl/prologue.h>
|
|
224
|
+
|
|
225
|
+
_LIBCUDACXX_BEGIN_NAMESPACE_STD_NOVERSION
|
|
226
|
+
|
|
227
|
+
# ifdef __cpp_lib_optional
|
|
228
|
+
|
|
229
|
+
using ::std::bad_optional_access;
|
|
230
|
+
|
|
231
|
+
# else // ^^^ __cpp_lib_optional ^^^ / vvv !__cpp_lib_optional vvv
|
|
232
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT bad_optional_access : public ::std::exception
|
|
233
|
+
{
|
|
234
|
+
public:
|
|
235
|
+
const char* what() const noexcept override
|
|
236
|
+
{
|
|
237
|
+
return "bad access to cuda::std::optional";
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
# endif // !__cpp_lib_optional
|
|
241
|
+
|
|
242
|
+
_LIBCUDACXX_END_NAMESPACE_STD_NOVERSION
|
|
243
|
+
|
|
244
|
+
# include <cuda/std/__cccl/epilogue.h>
|
|
245
|
+
|
|
246
|
+
#endif // _CCCL_HAS_EXCEPTIONS()
|
|
247
|
+
|
|
248
|
+
#include <cuda/std/__cccl/prologue.h>
|
|
249
|
+
|
|
250
|
+
_LIBCUDACXX_BEGIN_NAMESPACE_STD
|
|
251
|
+
|
|
252
|
+
[[noreturn]] _LIBCUDACXX_HIDE_FROM_ABI void __throw_bad_optional_access()
|
|
253
|
+
{
|
|
254
|
+
#if _CCCL_HAS_EXCEPTIONS()
|
|
255
|
+
NV_IF_ELSE_TARGET(
|
|
256
|
+
NV_IS_HOST, (throw _CUDA_VSTD_NOVERSION::bad_optional_access();), (_CUDA_VSTD_NOVERSION::terminate();))
|
|
257
|
+
#else // ^^^ !_CCCL_HAS_EXCEPTIONS() ^^^ / vvv _CCCL_HAS_EXCEPTIONS() vvv
|
|
258
|
+
_CUDA_VSTD_NOVERSION::terminate();
|
|
259
|
+
#endif // _CCCL_HAS_EXCEPTIONS()
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
struct nullopt_t
|
|
263
|
+
{
|
|
264
|
+
struct __secret_tag
|
|
265
|
+
{
|
|
266
|
+
_CCCL_HIDE_FROM_ABI explicit __secret_tag() = default;
|
|
267
|
+
};
|
|
268
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit nullopt_t(__secret_tag, __secret_tag) noexcept {}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
_CCCL_GLOBAL_CONSTANT nullopt_t nullopt{nullopt_t::__secret_tag{}, nullopt_t::__secret_tag{}};
|
|
272
|
+
|
|
273
|
+
struct __optional_construct_from_invoke_tag
|
|
274
|
+
{};
|
|
275
|
+
|
|
276
|
+
template <class _Tp, bool = is_trivially_destructible<_Tp>::value>
|
|
277
|
+
struct __optional_destruct_base;
|
|
278
|
+
|
|
279
|
+
template <class _Tp>
|
|
280
|
+
struct __optional_destruct_base<_Tp, false>
|
|
281
|
+
{
|
|
282
|
+
using value_type = _Tp;
|
|
283
|
+
static_assert(_CCCL_TRAIT(is_object, value_type),
|
|
284
|
+
"instantiation of optional with a non-object type is undefined behavior");
|
|
285
|
+
union
|
|
286
|
+
{
|
|
287
|
+
char __null_state_;
|
|
288
|
+
remove_cv_t<value_type> __val_;
|
|
289
|
+
};
|
|
290
|
+
bool __engaged_;
|
|
291
|
+
|
|
292
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
293
|
+
_LIBCUDACXX_HIDE_FROM_ABI _CCCL_CONSTEXPR_CXX20 ~__optional_destruct_base()
|
|
294
|
+
{
|
|
295
|
+
if (__engaged_)
|
|
296
|
+
{
|
|
297
|
+
__val_.~value_type();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_destruct_base() noexcept
|
|
302
|
+
: __null_state_()
|
|
303
|
+
, __engaged_(false)
|
|
304
|
+
{}
|
|
305
|
+
|
|
306
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
307
|
+
template <class... _Args>
|
|
308
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit __optional_destruct_base(in_place_t, _Args&&... __args)
|
|
309
|
+
: __val_(_CUDA_VSTD::forward<_Args>(__args)...)
|
|
310
|
+
, __engaged_(true)
|
|
311
|
+
{}
|
|
312
|
+
|
|
313
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
314
|
+
template <class _Fp, class... _Args>
|
|
315
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_destruct_base(
|
|
316
|
+
__optional_construct_from_invoke_tag, _Fp&& __f, _Args&&... __args)
|
|
317
|
+
: __val_(_CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Fp>(__f), _CUDA_VSTD::forward<_Args>(__args)...))
|
|
318
|
+
, __engaged_(true)
|
|
319
|
+
{}
|
|
320
|
+
|
|
321
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
322
|
+
_LIBCUDACXX_HIDE_FROM_ABI _CCCL_CONSTEXPR_CXX20 void reset() noexcept
|
|
323
|
+
{
|
|
324
|
+
if (__engaged_)
|
|
325
|
+
{
|
|
326
|
+
__val_.~value_type();
|
|
327
|
+
__engaged_ = false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
template <class _Tp>
|
|
333
|
+
struct __optional_destruct_base<_Tp, true>
|
|
334
|
+
{
|
|
335
|
+
using value_type = _Tp;
|
|
336
|
+
static_assert(_CCCL_TRAIT(is_object, value_type),
|
|
337
|
+
"instantiation of optional with a non-object type is undefined behavior");
|
|
338
|
+
union
|
|
339
|
+
{
|
|
340
|
+
char __null_state_;
|
|
341
|
+
remove_cv_t<value_type> __val_;
|
|
342
|
+
};
|
|
343
|
+
bool __engaged_;
|
|
344
|
+
|
|
345
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_destruct_base() noexcept
|
|
346
|
+
: __null_state_()
|
|
347
|
+
, __engaged_(false)
|
|
348
|
+
{}
|
|
349
|
+
|
|
350
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
351
|
+
template <class... _Args>
|
|
352
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit __optional_destruct_base(in_place_t, _Args&&... __args)
|
|
353
|
+
: __val_(_CUDA_VSTD::forward<_Args>(__args)...)
|
|
354
|
+
, __engaged_(true)
|
|
355
|
+
{}
|
|
356
|
+
|
|
357
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
358
|
+
template <class _Fp, class... _Args>
|
|
359
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_destruct_base(
|
|
360
|
+
__optional_construct_from_invoke_tag, _Fp&& __f, _Args&&... __args)
|
|
361
|
+
: __val_(_CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Fp>(__f), _CUDA_VSTD::forward<_Args>(__args)...))
|
|
362
|
+
, __engaged_(true)
|
|
363
|
+
{}
|
|
364
|
+
|
|
365
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void reset() noexcept
|
|
366
|
+
{
|
|
367
|
+
if (__engaged_)
|
|
368
|
+
{
|
|
369
|
+
__engaged_ = false;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
template <class _Tp>
|
|
375
|
+
struct __optional_storage_base : __optional_destruct_base<_Tp>
|
|
376
|
+
{
|
|
377
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_storage_base, __optional_destruct_base, _Tp);
|
|
378
|
+
|
|
379
|
+
using value_type = _Tp;
|
|
380
|
+
|
|
381
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool has_value() const noexcept
|
|
382
|
+
{
|
|
383
|
+
return this->__engaged_;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type& __get() & noexcept
|
|
387
|
+
{
|
|
388
|
+
return this->__val_;
|
|
389
|
+
}
|
|
390
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr const value_type& __get() const& noexcept
|
|
391
|
+
{
|
|
392
|
+
return this->__val_;
|
|
393
|
+
}
|
|
394
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type&& __get() && noexcept
|
|
395
|
+
{
|
|
396
|
+
return _CUDA_VSTD::move(this->__val_);
|
|
397
|
+
}
|
|
398
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr const value_type&& __get() const&& noexcept
|
|
399
|
+
{
|
|
400
|
+
return _CUDA_VSTD::move(this->__val_);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
404
|
+
template <class... _Args>
|
|
405
|
+
_LIBCUDACXX_HIDE_FROM_ABI _CCCL_CONSTEXPR_CXX20 void __construct(_Args&&... __args)
|
|
406
|
+
{
|
|
407
|
+
_CCCL_ASSERT(!has_value(), "__construct called for engaged __optional_storage");
|
|
408
|
+
#if _CCCL_STD_VER > 2017
|
|
409
|
+
_CUDA_VSTD::construct_at(_CUDA_VSTD::addressof(this->__val_), _CUDA_VSTD::forward<_Args>(__args)...);
|
|
410
|
+
#else
|
|
411
|
+
::new ((void*) _CUDA_VSTD::addressof(this->__val_)) value_type(_CUDA_VSTD::forward<_Args>(__args)...);
|
|
412
|
+
#endif
|
|
413
|
+
this->__engaged_ = true;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
template <class _That>
|
|
417
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void __construct_from(_That&& __opt)
|
|
418
|
+
{
|
|
419
|
+
if (__opt.has_value())
|
|
420
|
+
{
|
|
421
|
+
__construct(_CUDA_VSTD::forward<_That>(__opt).__get());
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
426
|
+
template <class _That>
|
|
427
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void __assign_from(_That&& __opt)
|
|
428
|
+
{
|
|
429
|
+
if (this->__engaged_ == __opt.has_value())
|
|
430
|
+
{
|
|
431
|
+
if (this->__engaged_)
|
|
432
|
+
{
|
|
433
|
+
this->__val_ = _CUDA_VSTD::forward<_That>(__opt).__get();
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
else
|
|
437
|
+
{
|
|
438
|
+
if (this->__engaged_)
|
|
439
|
+
{
|
|
440
|
+
this->reset();
|
|
441
|
+
}
|
|
442
|
+
else
|
|
443
|
+
{
|
|
444
|
+
__construct(_CUDA_VSTD::forward<_That>(__opt).__get());
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
template <class _Tp>
|
|
451
|
+
inline constexpr __smf_availability __optional_can_copy_construct =
|
|
452
|
+
_CCCL_TRAIT(is_trivially_copy_constructible, _Tp) ? __smf_availability::__trivial
|
|
453
|
+
: _CCCL_TRAIT(is_copy_constructible, _Tp)
|
|
454
|
+
? __smf_availability::__available
|
|
455
|
+
: __smf_availability::__deleted;
|
|
456
|
+
|
|
457
|
+
template <class _Tp, __smf_availability = __optional_can_copy_construct<_Tp>>
|
|
458
|
+
struct __optional_copy_base : __optional_storage_base<_Tp>
|
|
459
|
+
{
|
|
460
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_base, __optional_storage_base, _Tp);
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
template <class _Tp>
|
|
464
|
+
struct __optional_copy_base<_Tp, __smf_availability::__available> : __optional_storage_base<_Tp>
|
|
465
|
+
{
|
|
466
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_base, __optional_storage_base, _Tp);
|
|
467
|
+
|
|
468
|
+
// This ctor shouldn't need to initialize the base explicitly, but g++ 9 considers it to be uninitialized
|
|
469
|
+
// during constexpr evaluation if it isn't initialized explicitly. This can be replaced with the pattern
|
|
470
|
+
// below, in __optional_move_base, once g++ 9 falls off our support matrix.
|
|
471
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_copy_base(const __optional_copy_base& __opt)
|
|
472
|
+
: __base()
|
|
473
|
+
{
|
|
474
|
+
this->__construct_from(__opt);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base(__optional_copy_base&&) = default;
|
|
478
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base& operator=(const __optional_copy_base&) = default;
|
|
479
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base& operator=(__optional_copy_base&&) = default;
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
template <class _Tp>
|
|
483
|
+
struct __optional_copy_base<_Tp, __smf_availability::__deleted> : __optional_storage_base<_Tp>
|
|
484
|
+
{
|
|
485
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_base, __optional_storage_base, _Tp);
|
|
486
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base(const __optional_copy_base&) = delete;
|
|
487
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base(__optional_copy_base&&) = default;
|
|
488
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base& operator=(const __optional_copy_base&) = default;
|
|
489
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_base& operator=(__optional_copy_base&&) = default;
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
template <class _Tp>
|
|
493
|
+
inline constexpr __smf_availability __optional_can_move_construct =
|
|
494
|
+
_CCCL_TRAIT(is_trivially_move_constructible, _Tp) ? __smf_availability::__trivial
|
|
495
|
+
: _CCCL_TRAIT(is_move_constructible, _Tp)
|
|
496
|
+
? __smf_availability::__available
|
|
497
|
+
: __smf_availability::__deleted;
|
|
498
|
+
|
|
499
|
+
template <class _Tp, __smf_availability = __optional_can_move_construct<_Tp>>
|
|
500
|
+
struct __optional_move_base : __optional_copy_base<_Tp>
|
|
501
|
+
{
|
|
502
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_base, __optional_copy_base, _Tp);
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
template <class _Tp>
|
|
506
|
+
struct __optional_move_base<_Tp, __smf_availability::__available> : __optional_copy_base<_Tp>
|
|
507
|
+
{
|
|
508
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_base, __optional_copy_base, _Tp);
|
|
509
|
+
|
|
510
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base(const __optional_move_base&) = default;
|
|
511
|
+
|
|
512
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_move_base(__optional_move_base&& __opt) noexcept(
|
|
513
|
+
_CCCL_TRAIT(is_nothrow_move_constructible, _Tp))
|
|
514
|
+
{
|
|
515
|
+
this->__construct_from(_CUDA_VSTD::move(__opt));
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base& operator=(const __optional_move_base&) = default;
|
|
519
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base& operator=(__optional_move_base&&) = default;
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
template <class _Tp>
|
|
523
|
+
struct __optional_move_base<_Tp, __smf_availability::__deleted> : __optional_copy_base<_Tp>
|
|
524
|
+
{
|
|
525
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_base, __optional_copy_base, _Tp);
|
|
526
|
+
|
|
527
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base(const __optional_move_base&) = default;
|
|
528
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base(__optional_move_base&&) = delete;
|
|
529
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base& operator=(const __optional_move_base&) = default;
|
|
530
|
+
_CCCL_HIDE_FROM_ABI __optional_move_base& operator=(__optional_move_base&&) = default;
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
template <class _Tp>
|
|
534
|
+
inline constexpr __smf_availability __optional_can_copy_assign =
|
|
535
|
+
_CCCL_TRAIT(is_trivially_destructible, _Tp) && _CCCL_TRAIT(is_trivially_copy_constructible, _Tp)
|
|
536
|
+
&& _CCCL_TRAIT(is_trivially_copy_assignable, _Tp)
|
|
537
|
+
? __smf_availability::__trivial
|
|
538
|
+
: _CCCL_TRAIT(is_destructible, _Tp) && _CCCL_TRAIT(is_copy_constructible, _Tp) && _CCCL_TRAIT(is_copy_assignable, _Tp)
|
|
539
|
+
? __smf_availability::__available
|
|
540
|
+
: __smf_availability::__deleted;
|
|
541
|
+
|
|
542
|
+
template <class _Tp, __smf_availability = __optional_can_copy_assign<_Tp>>
|
|
543
|
+
struct __optional_copy_assign_base : __optional_move_base<_Tp>
|
|
544
|
+
{
|
|
545
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_assign_base, __optional_move_base, _Tp);
|
|
546
|
+
};
|
|
547
|
+
|
|
548
|
+
template <class _Tp>
|
|
549
|
+
struct __optional_copy_assign_base<_Tp, __smf_availability::__available> : __optional_move_base<_Tp>
|
|
550
|
+
{
|
|
551
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_assign_base, __optional_move_base, _Tp);
|
|
552
|
+
|
|
553
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base(const __optional_copy_assign_base&) = default;
|
|
554
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base(__optional_copy_assign_base&&) = default;
|
|
555
|
+
|
|
556
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_copy_assign_base& operator=(const __optional_copy_assign_base& __opt)
|
|
557
|
+
{
|
|
558
|
+
this->__assign_from(__opt);
|
|
559
|
+
return *this;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
__optional_copy_assign_base& operator=(__optional_copy_assign_base&&) = default;
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
template <class _Tp>
|
|
566
|
+
struct __optional_copy_assign_base<_Tp, __smf_availability::__deleted> : __optional_move_base<_Tp>
|
|
567
|
+
{
|
|
568
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_copy_assign_base, __optional_move_base, _Tp);
|
|
569
|
+
|
|
570
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base(const __optional_copy_assign_base&) = default;
|
|
571
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base(__optional_copy_assign_base&&) = default;
|
|
572
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base& operator=(const __optional_copy_assign_base&) = delete;
|
|
573
|
+
_CCCL_HIDE_FROM_ABI __optional_copy_assign_base& operator=(__optional_copy_assign_base&&) = default;
|
|
574
|
+
};
|
|
575
|
+
|
|
576
|
+
template <class _Tp>
|
|
577
|
+
inline constexpr __smf_availability __optional_can_move_assign =
|
|
578
|
+
_CCCL_TRAIT(is_trivially_destructible, _Tp) && _CCCL_TRAIT(is_trivially_move_constructible, _Tp)
|
|
579
|
+
&& _CCCL_TRAIT(is_trivially_move_assignable, _Tp)
|
|
580
|
+
? __smf_availability::__trivial
|
|
581
|
+
: _CCCL_TRAIT(is_destructible, _Tp) && _CCCL_TRAIT(is_move_constructible, _Tp) && _CCCL_TRAIT(is_move_assignable, _Tp)
|
|
582
|
+
? __smf_availability::__available
|
|
583
|
+
: __smf_availability::__deleted;
|
|
584
|
+
|
|
585
|
+
template <class _Tp, __smf_availability = __optional_can_move_assign<_Tp>>
|
|
586
|
+
struct __optional_move_assign_base : __optional_copy_assign_base<_Tp>
|
|
587
|
+
{
|
|
588
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_assign_base, __optional_copy_assign_base, _Tp);
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
template <class _Tp>
|
|
592
|
+
struct __optional_move_assign_base<_Tp, __smf_availability::__available> : __optional_copy_assign_base<_Tp>
|
|
593
|
+
{
|
|
594
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_assign_base, __optional_copy_assign_base, _Tp);
|
|
595
|
+
|
|
596
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base(const __optional_move_assign_base& __opt) = default;
|
|
597
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base(__optional_move_assign_base&&) = default;
|
|
598
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base& operator=(const __optional_move_assign_base&) = default;
|
|
599
|
+
|
|
600
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr __optional_move_assign_base&
|
|
601
|
+
operator=(__optional_move_assign_base&& __opt) noexcept(
|
|
602
|
+
_CCCL_TRAIT(is_nothrow_move_assignable, _Tp) && _CCCL_TRAIT(is_nothrow_move_constructible, _Tp))
|
|
603
|
+
{
|
|
604
|
+
this->__assign_from(_CUDA_VSTD::move(__opt));
|
|
605
|
+
return *this;
|
|
606
|
+
}
|
|
607
|
+
};
|
|
608
|
+
|
|
609
|
+
template <class _Tp>
|
|
610
|
+
struct __optional_move_assign_base<_Tp, __smf_availability::__deleted> : __optional_copy_assign_base<_Tp>
|
|
611
|
+
{
|
|
612
|
+
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(__optional_move_assign_base, __optional_copy_assign_base, _Tp);
|
|
613
|
+
|
|
614
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base(const __optional_move_assign_base& __opt) = default;
|
|
615
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base(__optional_move_assign_base&&) = default;
|
|
616
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base& operator=(const __optional_move_assign_base&) = default;
|
|
617
|
+
_CCCL_HIDE_FROM_ABI __optional_move_assign_base& operator=(__optional_move_assign_base&&) = delete;
|
|
618
|
+
};
|
|
619
|
+
|
|
620
|
+
template <class _Tp>
|
|
621
|
+
class optional;
|
|
622
|
+
template <class _Tp>
|
|
623
|
+
struct __is_std_optional : false_type
|
|
624
|
+
{};
|
|
625
|
+
template <class _Tp>
|
|
626
|
+
struct __is_std_optional<optional<_Tp>> : true_type
|
|
627
|
+
{};
|
|
628
|
+
|
|
629
|
+
// Constraints
|
|
630
|
+
template <class _Tp, class _Up, class _Opt = optional<_Up>>
|
|
631
|
+
using __opt_check_constructible_from_opt =
|
|
632
|
+
_Or<is_constructible<_Tp, _Opt&>,
|
|
633
|
+
is_constructible<_Tp, _Opt const&>,
|
|
634
|
+
is_constructible<_Tp, _Opt&&>,
|
|
635
|
+
is_constructible<_Tp, _Opt const&&>,
|
|
636
|
+
is_convertible<_Opt&, _Tp>,
|
|
637
|
+
is_convertible<_Opt const&, _Tp>,
|
|
638
|
+
is_convertible<_Opt&&, _Tp>,
|
|
639
|
+
is_convertible<_Opt const&&, _Tp>>;
|
|
640
|
+
|
|
641
|
+
template <class _Tp, class _Up, class _Opt = optional<_Up>>
|
|
642
|
+
using __opt_check_assignable_from_opt =
|
|
643
|
+
_Or<is_assignable<_Tp&, _Opt&>,
|
|
644
|
+
is_assignable<_Tp&, _Opt const&>,
|
|
645
|
+
is_assignable<_Tp&, _Opt&&>,
|
|
646
|
+
is_assignable<_Tp&, _Opt const&&>>;
|
|
647
|
+
|
|
648
|
+
template <class _Tp, class _Up>
|
|
649
|
+
inline constexpr bool __opt_is_implictly_constructible =
|
|
650
|
+
_CCCL_TRAIT(is_constructible, _Tp, _Up) && _CCCL_TRAIT(is_convertible, _Up, _Tp);
|
|
651
|
+
|
|
652
|
+
template <class _Tp, class _Up>
|
|
653
|
+
inline constexpr bool __opt_is_explictly_constructible =
|
|
654
|
+
_CCCL_TRAIT(is_constructible, _Tp, _Up) && !_CCCL_TRAIT(is_convertible, _Up, _Tp);
|
|
655
|
+
|
|
656
|
+
template <class _Tp, class _Up>
|
|
657
|
+
inline constexpr bool __opt_is_constructible_from_U =
|
|
658
|
+
!_CCCL_TRAIT(is_same, remove_cvref_t<_Up>, in_place_t) && !_CCCL_TRAIT(is_same, remove_cvref_t<_Up>, optional<_Tp>);
|
|
659
|
+
|
|
660
|
+
template <class _Tp, class _Up>
|
|
661
|
+
inline constexpr bool __opt_is_constructible_from_opt =
|
|
662
|
+
!_CCCL_TRAIT(is_same, _Up, _Tp) && !__opt_check_constructible_from_opt<_Tp, _Up>::value;
|
|
663
|
+
|
|
664
|
+
template <class _Tp, class _Up>
|
|
665
|
+
inline constexpr bool __opt_is_assignable =
|
|
666
|
+
_CCCL_TRAIT(is_constructible, _Tp, _Up) && _CCCL_TRAIT(is_assignable, _Tp&, _Up);
|
|
667
|
+
|
|
668
|
+
template <class _Tp, class _Up>
|
|
669
|
+
inline constexpr bool __opt_is_assignable_from_U =
|
|
670
|
+
!_CCCL_TRAIT(is_same, remove_cvref_t<_Up>, optional<_Tp>)
|
|
671
|
+
&& (!_CCCL_TRAIT(is_same, remove_cvref_t<_Up>, _Tp) || !_CCCL_TRAIT(is_scalar, _Tp));
|
|
672
|
+
|
|
673
|
+
template <class _Tp, class _Up>
|
|
674
|
+
inline constexpr bool __opt_is_assignable_from_opt =
|
|
675
|
+
!_CCCL_TRAIT(is_same, _Up, _Tp) && !__opt_check_constructible_from_opt<_Tp, _Up>::value
|
|
676
|
+
&& !__opt_check_assignable_from_opt<_Tp, _Up>::value;
|
|
677
|
+
|
|
678
|
+
template <class _Tp>
|
|
679
|
+
class optional : private __optional_move_assign_base<_Tp>
|
|
680
|
+
{
|
|
681
|
+
using __base = __optional_move_assign_base<_Tp>;
|
|
682
|
+
|
|
683
|
+
template <class>
|
|
684
|
+
friend class optional;
|
|
685
|
+
|
|
686
|
+
public:
|
|
687
|
+
using value_type = _Tp;
|
|
688
|
+
|
|
689
|
+
private:
|
|
690
|
+
// Disable the reference extension using this static assert.
|
|
691
|
+
static_assert(!_CCCL_TRAIT(is_same, remove_cvref_t<value_type>, in_place_t),
|
|
692
|
+
"instantiation of optional with in_place_t is ill-formed");
|
|
693
|
+
static_assert(!_CCCL_TRAIT(is_same, remove_cvref_t<value_type>, nullopt_t),
|
|
694
|
+
"instantiation of optional with nullopt_t is ill-formed");
|
|
695
|
+
static_assert(!_CCCL_TRAIT(is_reference, value_type),
|
|
696
|
+
"instantiation of optional with a reference type is ill-formed. Define "
|
|
697
|
+
"CCCL_ENABLE_OPTIONAL_REF to enable it as a non-standard extension");
|
|
698
|
+
static_assert(_CCCL_TRAIT(is_destructible, value_type),
|
|
699
|
+
"instantiation of optional with a non-destructible type is ill-formed");
|
|
700
|
+
static_assert(!_CCCL_TRAIT(is_array, value_type), "instantiation of optional with an array type is ill-formed");
|
|
701
|
+
|
|
702
|
+
public:
|
|
703
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional() noexcept {}
|
|
704
|
+
_CCCL_HIDE_FROM_ABI constexpr optional(const optional&) = default;
|
|
705
|
+
_CCCL_HIDE_FROM_ABI constexpr optional(optional&&) = default;
|
|
706
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(nullopt_t) noexcept {}
|
|
707
|
+
|
|
708
|
+
_CCCL_TEMPLATE(class _In_place_t, class... _Args)
|
|
709
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_same, _In_place_t, in_place_t)
|
|
710
|
+
_CCCL_AND _CCCL_TRAIT(is_constructible, value_type, _Args...))
|
|
711
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(_In_place_t, _Args&&... __args)
|
|
712
|
+
: __base(in_place, _CUDA_VSTD::forward<_Args>(__args)...)
|
|
713
|
+
{}
|
|
714
|
+
|
|
715
|
+
_CCCL_TEMPLATE(class _Up, class... _Args)
|
|
716
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_constructible, value_type, initializer_list<_Up>&, _Args...))
|
|
717
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args)
|
|
718
|
+
: __base(in_place, __il, _CUDA_VSTD::forward<_Args>(__args)...)
|
|
719
|
+
{}
|
|
720
|
+
|
|
721
|
+
_CCCL_TEMPLATE(class _Up = value_type)
|
|
722
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_U<_Tp, _Up> _CCCL_AND __opt_is_implictly_constructible<_Tp, _Up>)
|
|
723
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(_Up&& __v)
|
|
724
|
+
: __base(in_place, _CUDA_VSTD::forward<_Up>(__v))
|
|
725
|
+
{}
|
|
726
|
+
|
|
727
|
+
_CCCL_TEMPLATE(class _Up)
|
|
728
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_U<_Tp, _Up> _CCCL_AND __opt_is_explictly_constructible<_Tp, _Up>)
|
|
729
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(_Up&& __v)
|
|
730
|
+
: __base(in_place, _CUDA_VSTD::forward<_Up>(__v))
|
|
731
|
+
{}
|
|
732
|
+
|
|
733
|
+
_CCCL_TEMPLATE(class _Up)
|
|
734
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND __opt_is_implictly_constructible<_Tp, const _Up&>)
|
|
735
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up>& __v)
|
|
736
|
+
{
|
|
737
|
+
this->__construct_from(__v);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
_CCCL_TEMPLATE(class _Up)
|
|
741
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND __opt_is_explictly_constructible<_Tp, const _Up&>)
|
|
742
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(const optional<_Up>& __v)
|
|
743
|
+
{
|
|
744
|
+
this->__construct_from(__v);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
#ifdef CCCL_ENABLE_OPTIONAL_REF
|
|
748
|
+
_CCCL_TEMPLATE(class _Up)
|
|
749
|
+
_CCCL_REQUIRES((_CCCL_TRAIT(is_same, remove_cv_t<_Tp>, bool) || __opt_is_constructible_from_opt<_Tp, _Up>)
|
|
750
|
+
_CCCL_AND __opt_is_implictly_constructible<_Tp, const _Up&>)
|
|
751
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up&>& __v)
|
|
752
|
+
{
|
|
753
|
+
this->__construct_from(__v);
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
_CCCL_TEMPLATE(class _Up)
|
|
757
|
+
_CCCL_REQUIRES((_CCCL_TRAIT(is_same, remove_cv_t<_Tp>, bool) || __opt_is_constructible_from_opt<_Tp, _Up>)
|
|
758
|
+
_CCCL_AND __opt_is_explictly_constructible<_Tp, const _Up&>)
|
|
759
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(const optional<_Up&>& __v)
|
|
760
|
+
{
|
|
761
|
+
this->__construct_from(__v);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
_CCCL_TEMPLATE(class _Up)
|
|
765
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND
|
|
766
|
+
__opt_is_implictly_constructible<_Tp, _Up> _CCCL_AND(!_CCCL_TRAIT(is_reference, _Up)))
|
|
767
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>&& __v)
|
|
768
|
+
{
|
|
769
|
+
this->__construct_from(_CUDA_VSTD::move(__v));
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
_CCCL_TEMPLATE(class _Up)
|
|
773
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND
|
|
774
|
+
__opt_is_explictly_constructible<_Tp, _Up> _CCCL_AND(!_CCCL_TRAIT(is_reference, _Up)))
|
|
775
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(optional<_Up>&& __v)
|
|
776
|
+
{
|
|
777
|
+
this->__construct_from(_CUDA_VSTD::move(__v));
|
|
778
|
+
}
|
|
779
|
+
#else // ^^^ CCCL_ENABLE_OPTIONAL_REF ^^^ / vvv !CCCL_ENABLE_OPTIONAL_REF vvv
|
|
780
|
+
_CCCL_TEMPLATE(class _Up)
|
|
781
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND __opt_is_implictly_constructible<_Tp, _Up>)
|
|
782
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>&& __v)
|
|
783
|
+
{
|
|
784
|
+
this->__construct_from(_CUDA_VSTD::move(__v));
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
_CCCL_TEMPLATE(class _Up)
|
|
788
|
+
_CCCL_REQUIRES(__opt_is_constructible_from_opt<_Tp, _Up> _CCCL_AND __opt_is_explictly_constructible<_Tp, _Up>)
|
|
789
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(optional<_Up>&& __v)
|
|
790
|
+
{
|
|
791
|
+
this->__construct_from(_CUDA_VSTD::move(__v));
|
|
792
|
+
}
|
|
793
|
+
#endif // !CCCL_ENABLE_OPTIONAL_REF
|
|
794
|
+
|
|
795
|
+
private:
|
|
796
|
+
template <class _Fp, class... _Args>
|
|
797
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit optional(
|
|
798
|
+
__optional_construct_from_invoke_tag, _Fp&& __f, _Args&&... __args)
|
|
799
|
+
: __base(
|
|
800
|
+
__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Fp>(__f), _CUDA_VSTD::forward<_Args>(__args)...)
|
|
801
|
+
{}
|
|
802
|
+
|
|
803
|
+
public:
|
|
804
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(nullopt_t) noexcept
|
|
805
|
+
{
|
|
806
|
+
reset();
|
|
807
|
+
return *this;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
constexpr optional& operator=(const optional&) = default;
|
|
811
|
+
constexpr optional& operator=(optional&&) = default;
|
|
812
|
+
|
|
813
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
814
|
+
_CCCL_TEMPLATE(class _Up = value_type)
|
|
815
|
+
_CCCL_REQUIRES(__opt_is_assignable_from_U<_Tp, _Up> _CCCL_AND __opt_is_assignable<_Tp, _Up>)
|
|
816
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(_Up&& __v)
|
|
817
|
+
{
|
|
818
|
+
if (this->has_value())
|
|
819
|
+
{
|
|
820
|
+
this->__get() = _CUDA_VSTD::forward<_Up>(__v);
|
|
821
|
+
}
|
|
822
|
+
else
|
|
823
|
+
{
|
|
824
|
+
this->__construct(_CUDA_VSTD::forward<_Up>(__v));
|
|
825
|
+
}
|
|
826
|
+
return *this;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
#ifdef CCCL_ENABLE_OPTIONAL_REF
|
|
830
|
+
_CCCL_TEMPLATE(class _Up)
|
|
831
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_reference, _Up))
|
|
832
|
+
_CCCL_AND __opt_is_assignable_from_opt<_Tp, _Up> _CCCL_AND __opt_is_assignable<_Tp, const _Up&>)
|
|
833
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(const optional<_Up>& __v)
|
|
834
|
+
{
|
|
835
|
+
this->__assign_from(__v);
|
|
836
|
+
return *this;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
_CCCL_TEMPLATE(class _Up)
|
|
840
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_reference, _Up)
|
|
841
|
+
_CCCL_AND __opt_is_assignable_from_opt<_Tp, _Up&> _CCCL_AND __opt_is_assignable<_Tp, _Up&>)
|
|
842
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(const optional<_Up>& __v)
|
|
843
|
+
{
|
|
844
|
+
this->__assign_from(__v);
|
|
845
|
+
return *this;
|
|
846
|
+
}
|
|
847
|
+
#else // ^^^ CCCL_ENABLE_OPTIONAL_REF ^^^ / vvv !CCCL_ENABLE_OPTIONAL_REF vvv
|
|
848
|
+
_CCCL_TEMPLATE(class _Up)
|
|
849
|
+
_CCCL_REQUIRES(__opt_is_assignable_from_opt<_Tp, _Up> _CCCL_AND __opt_is_assignable<_Tp, const _Up&>)
|
|
850
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(const optional<_Up>& __v)
|
|
851
|
+
{
|
|
852
|
+
this->__assign_from(__v);
|
|
853
|
+
return *this;
|
|
854
|
+
}
|
|
855
|
+
#endif // !CCCL_ENABLE_OPTIONAL_REF
|
|
856
|
+
|
|
857
|
+
_CCCL_TEMPLATE(class _Up)
|
|
858
|
+
_CCCL_REQUIRES(__opt_is_assignable_from_opt<_Tp, _Up> _CCCL_AND __opt_is_assignable<_Tp, _Up>)
|
|
859
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(optional<_Up>&& __v)
|
|
860
|
+
{
|
|
861
|
+
this->__assign_from(_CUDA_VSTD::move(__v));
|
|
862
|
+
return *this;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
template <class... _Args, enable_if_t<_CCCL_TRAIT(is_constructible, value_type, _Args...), int> = 0>
|
|
866
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp& emplace(_Args&&... __args)
|
|
867
|
+
{
|
|
868
|
+
reset();
|
|
869
|
+
this->__construct(_CUDA_VSTD::forward<_Args>(__args)...);
|
|
870
|
+
return this->__get();
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
template <class _Up,
|
|
874
|
+
class... _Args,
|
|
875
|
+
enable_if_t<_CCCL_TRAIT(is_constructible, value_type, initializer_list<_Up>&, _Args...), int> = 0>
|
|
876
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args)
|
|
877
|
+
{
|
|
878
|
+
reset();
|
|
879
|
+
this->__construct(__il, _CUDA_VSTD::forward<_Args>(__args)...);
|
|
880
|
+
return this->__get();
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
884
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void swap(optional& __opt) noexcept(
|
|
885
|
+
_CCCL_TRAIT(is_nothrow_move_constructible, value_type) && _CCCL_TRAIT(is_nothrow_swappable, value_type))
|
|
886
|
+
{
|
|
887
|
+
if (this->has_value() == __opt.has_value())
|
|
888
|
+
{
|
|
889
|
+
using _CUDA_VSTD::swap;
|
|
890
|
+
if (this->has_value())
|
|
891
|
+
{
|
|
892
|
+
swap(this->__get(), __opt.__get());
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
else
|
|
896
|
+
{
|
|
897
|
+
if (this->has_value())
|
|
898
|
+
{
|
|
899
|
+
__opt.__construct(_CUDA_VSTD::move(this->__get()));
|
|
900
|
+
reset();
|
|
901
|
+
}
|
|
902
|
+
else
|
|
903
|
+
{
|
|
904
|
+
this->__construct(_CUDA_VSTD::move(__opt.__get()));
|
|
905
|
+
__opt.reset();
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr add_pointer_t<value_type const> operator->() const
|
|
911
|
+
{
|
|
912
|
+
_CCCL_ASSERT(this->has_value(), "optional operator-> called on a disengaged value");
|
|
913
|
+
return _CUDA_VSTD::addressof(this->__get());
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr add_pointer_t<value_type> operator->()
|
|
917
|
+
{
|
|
918
|
+
_CCCL_ASSERT(this->has_value(), "optional operator-> called on a disengaged value");
|
|
919
|
+
return _CUDA_VSTD::addressof(this->__get());
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr const value_type& operator*() const& noexcept
|
|
923
|
+
{
|
|
924
|
+
_CCCL_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
|
|
925
|
+
return this->__get();
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type& operator*() & noexcept
|
|
929
|
+
{
|
|
930
|
+
_CCCL_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
|
|
931
|
+
return this->__get();
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type&& operator*() && noexcept
|
|
935
|
+
{
|
|
936
|
+
_CCCL_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
|
|
937
|
+
return _CUDA_VSTD::move(this->__get());
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr const value_type&& operator*() const&& noexcept
|
|
941
|
+
{
|
|
942
|
+
_CCCL_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
|
|
943
|
+
return _CUDA_VSTD::move(this->__get());
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept
|
|
947
|
+
{
|
|
948
|
+
return has_value();
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
using __base::__get;
|
|
952
|
+
using __base::has_value;
|
|
953
|
+
|
|
954
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type const& value() const&
|
|
955
|
+
{
|
|
956
|
+
if (!this->has_value())
|
|
957
|
+
{
|
|
958
|
+
__throw_bad_optional_access();
|
|
959
|
+
}
|
|
960
|
+
return this->__get();
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type& value() &
|
|
964
|
+
{
|
|
965
|
+
if (!this->has_value())
|
|
966
|
+
{
|
|
967
|
+
__throw_bad_optional_access();
|
|
968
|
+
}
|
|
969
|
+
return this->__get();
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type&& value() &&
|
|
973
|
+
{
|
|
974
|
+
if (!this->has_value())
|
|
975
|
+
{
|
|
976
|
+
__throw_bad_optional_access();
|
|
977
|
+
}
|
|
978
|
+
return _CUDA_VSTD::move(this->__get());
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type const&& value() const&&
|
|
982
|
+
{
|
|
983
|
+
if (!this->has_value())
|
|
984
|
+
{
|
|
985
|
+
__throw_bad_optional_access();
|
|
986
|
+
}
|
|
987
|
+
return _CUDA_VSTD::move(this->__get());
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
template <class _Up>
|
|
991
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type value_or(_Up&& __v) const&
|
|
992
|
+
{
|
|
993
|
+
static_assert(_CCCL_TRAIT(is_copy_constructible, value_type),
|
|
994
|
+
"optional<T>::value_or: T must be copy constructible");
|
|
995
|
+
static_assert(_CCCL_TRAIT(is_convertible, _Up, value_type), "optional<T>::value_or: U must be convertible to T");
|
|
996
|
+
return this->has_value() ? this->__get() : static_cast<value_type>(_CUDA_VSTD::forward<_Up>(__v));
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
template <class _Up>
|
|
1000
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr value_type value_or(_Up&& __v) &&
|
|
1001
|
+
{
|
|
1002
|
+
static_assert(_CCCL_TRAIT(is_move_constructible, value_type),
|
|
1003
|
+
"optional<T>::value_or: T must be move constructible");
|
|
1004
|
+
static_assert(_CCCL_TRAIT(is_convertible, _Up, value_type), "optional<T>::value_or: U must be convertible to T");
|
|
1005
|
+
return this->has_value() ? _CUDA_VSTD::move(this->__get()) : static_cast<value_type>(_CUDA_VSTD::forward<_Up>(__v));
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
template <class _Func>
|
|
1009
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) &
|
|
1010
|
+
{
|
|
1011
|
+
using _Up = invoke_result_t<_Func, value_type&>;
|
|
1012
|
+
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
|
|
1013
|
+
"Result of f(value()) must be a specialization of std::optional");
|
|
1014
|
+
if (this->__engaged_)
|
|
1015
|
+
{
|
|
1016
|
+
return _CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), this->__get());
|
|
1017
|
+
}
|
|
1018
|
+
return remove_cvref_t<_Up>();
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
template <class _Func>
|
|
1022
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&
|
|
1023
|
+
{
|
|
1024
|
+
using _Up = invoke_result_t<_Func, const value_type&>;
|
|
1025
|
+
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
|
|
1026
|
+
"Result of f(value()) must be a specialization of std::optional");
|
|
1027
|
+
if (this->__engaged_)
|
|
1028
|
+
{
|
|
1029
|
+
return _CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), this->__get());
|
|
1030
|
+
}
|
|
1031
|
+
return remove_cvref_t<_Up>();
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
template <class _Func>
|
|
1035
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) &&
|
|
1036
|
+
{
|
|
1037
|
+
using _Up = invoke_result_t<_Func, value_type&&>;
|
|
1038
|
+
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
|
|
1039
|
+
"Result of f(std::move(value())) must be a specialization of std::optional");
|
|
1040
|
+
if (this->__engaged_)
|
|
1041
|
+
{
|
|
1042
|
+
return _CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), _CUDA_VSTD::move(this->__get()));
|
|
1043
|
+
}
|
|
1044
|
+
return remove_cvref_t<_Up>();
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
template <class _Func>
|
|
1048
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&&
|
|
1049
|
+
{
|
|
1050
|
+
using _Up = invoke_result_t<_Func, const value_type&&>;
|
|
1051
|
+
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
|
|
1052
|
+
"Result of f(std::move(value())) must be a specialization of std::optional");
|
|
1053
|
+
if (this->__engaged_)
|
|
1054
|
+
{
|
|
1055
|
+
return _CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), _CUDA_VSTD::move(this->__get()));
|
|
1056
|
+
}
|
|
1057
|
+
return remove_cvref_t<_Up>();
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
template <class _Func>
|
|
1061
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) &
|
|
1062
|
+
{
|
|
1063
|
+
using _Up = remove_cv_t<invoke_result_t<_Func, value_type&>>;
|
|
1064
|
+
static_assert(!_CCCL_TRAIT(is_array, _Up), "Result of f(value()) should not be an Array");
|
|
1065
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, in_place_t), "Result of f(value()) should not be std::in_place_t");
|
|
1066
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, nullopt_t), "Result of f(value()) should not be std::nullopt_t");
|
|
1067
|
+
static_assert(_CCCL_TRAIT(is_object, _Up), "Result of f(value()) should be an object type");
|
|
1068
|
+
if (this->__engaged_)
|
|
1069
|
+
{
|
|
1070
|
+
return optional<_Up>(__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Func>(__f), this->__get());
|
|
1071
|
+
}
|
|
1072
|
+
return optional<_Up>();
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
template <class _Func>
|
|
1076
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&
|
|
1077
|
+
{
|
|
1078
|
+
using _Up = remove_cv_t<invoke_result_t<_Func, const value_type&>>;
|
|
1079
|
+
static_assert(!_CCCL_TRAIT(is_array, _Up), "Result of f(value()) should not be an Array");
|
|
1080
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, in_place_t), "Result of f(value()) should not be std::in_place_t");
|
|
1081
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, nullopt_t), "Result of f(value()) should not be std::nullopt_t");
|
|
1082
|
+
static_assert(_CCCL_TRAIT(is_object, _Up), "Result of f(value()) should be an object type");
|
|
1083
|
+
if (this->__engaged_)
|
|
1084
|
+
{
|
|
1085
|
+
return optional<_Up>(__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Func>(__f), this->__get());
|
|
1086
|
+
}
|
|
1087
|
+
return optional<_Up>();
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
template <class _Func>
|
|
1091
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) &&
|
|
1092
|
+
{
|
|
1093
|
+
using _Up = remove_cv_t<invoke_result_t<_Func, value_type&&>>;
|
|
1094
|
+
static_assert(!_CCCL_TRAIT(is_array, _Up), "Result of f(std::move(value())) should not be an Array");
|
|
1095
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, in_place_t),
|
|
1096
|
+
"Result of f(std::move(value())) should not be std::in_place_t");
|
|
1097
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, nullopt_t),
|
|
1098
|
+
"Result of f(std::move(value())) should not be std::nullopt_t");
|
|
1099
|
+
static_assert(_CCCL_TRAIT(is_object, _Up), "Result of f(std::move(value())) should be an object type");
|
|
1100
|
+
if (this->__engaged_)
|
|
1101
|
+
{
|
|
1102
|
+
return optional<_Up>(
|
|
1103
|
+
__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Func>(__f), _CUDA_VSTD::move(this->__get()));
|
|
1104
|
+
}
|
|
1105
|
+
return optional<_Up>();
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
template <class _Func>
|
|
1109
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&&
|
|
1110
|
+
{
|
|
1111
|
+
using _Up = remove_cvref_t<invoke_result_t<_Func, const value_type&&>>;
|
|
1112
|
+
static_assert(!_CCCL_TRAIT(is_array, _Up), "Result of f(std::move(value())) should not be an Array");
|
|
1113
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, in_place_t),
|
|
1114
|
+
"Result of f(std::move(value())) should not be std::in_place_t");
|
|
1115
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, nullopt_t),
|
|
1116
|
+
"Result of f(std::move(value())) should not be std::nullopt_t");
|
|
1117
|
+
static_assert(_CCCL_TRAIT(is_object, _Up), "Result of f(std::move(value())) should be an object type");
|
|
1118
|
+
if (this->__engaged_)
|
|
1119
|
+
{
|
|
1120
|
+
return optional<_Up>(
|
|
1121
|
+
__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Func>(__f), _CUDA_VSTD::move(this->__get()));
|
|
1122
|
+
}
|
|
1123
|
+
return optional<_Up>();
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
_CCCL_TEMPLATE(class _Func, class _Tp2 = _Tp)
|
|
1127
|
+
_CCCL_REQUIRES(invocable<_Func> _CCCL_AND _CCCL_TRAIT(is_copy_constructible, _Tp2))
|
|
1128
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional or_else(_Func&& __f) const&
|
|
1129
|
+
{
|
|
1130
|
+
static_assert(_CCCL_TRAIT(is_same, remove_cvref_t<invoke_result_t<_Func>>, optional),
|
|
1131
|
+
"Result of f() should be the same type as this optional");
|
|
1132
|
+
if (this->__engaged_)
|
|
1133
|
+
{
|
|
1134
|
+
return *this;
|
|
1135
|
+
}
|
|
1136
|
+
return _CUDA_VSTD::forward<_Func>(__f)();
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
_CCCL_TEMPLATE(class _Func, class _Tp2 = _Tp)
|
|
1140
|
+
_CCCL_REQUIRES(invocable<_Func> _CCCL_AND _CCCL_TRAIT(is_move_constructible, _Tp2))
|
|
1141
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional or_else(_Func&& __f) &&
|
|
1142
|
+
{
|
|
1143
|
+
static_assert(_CCCL_TRAIT(is_same, remove_cvref_t<invoke_result_t<_Func>>, optional),
|
|
1144
|
+
"Result of f() should be the same type as this optional");
|
|
1145
|
+
if (this->__engaged_)
|
|
1146
|
+
{
|
|
1147
|
+
return _CUDA_VSTD::move(*this);
|
|
1148
|
+
}
|
|
1149
|
+
return _CUDA_VSTD::forward<_Func>(__f)();
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
using __base::reset;
|
|
1153
|
+
};
|
|
1154
|
+
|
|
1155
|
+
template <class _Tp>
|
|
1156
|
+
_CCCL_HOST_DEVICE optional(_Tp) -> optional<_Tp>;
|
|
1157
|
+
|
|
1158
|
+
// Comparisons between optionals
|
|
1159
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1160
|
+
template <class _Tp, class _Up>
|
|
1161
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1162
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() == declval<const _Up&>()), bool),
|
|
1163
|
+
bool>
|
|
1164
|
+
operator==(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1165
|
+
{
|
|
1166
|
+
if (static_cast<bool>(__x) != static_cast<bool>(__y))
|
|
1167
|
+
{
|
|
1168
|
+
return false;
|
|
1169
|
+
}
|
|
1170
|
+
if (!static_cast<bool>(__x))
|
|
1171
|
+
{
|
|
1172
|
+
return true;
|
|
1173
|
+
}
|
|
1174
|
+
return *__x == *__y;
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1178
|
+
template <class _Tp, class _Up>
|
|
1179
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1180
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() != declval<const _Up&>()), bool),
|
|
1181
|
+
bool>
|
|
1182
|
+
operator!=(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1183
|
+
{
|
|
1184
|
+
if (static_cast<bool>(__x) != static_cast<bool>(__y))
|
|
1185
|
+
{
|
|
1186
|
+
return true;
|
|
1187
|
+
}
|
|
1188
|
+
if (!static_cast<bool>(__x))
|
|
1189
|
+
{
|
|
1190
|
+
return false;
|
|
1191
|
+
}
|
|
1192
|
+
return *__x != *__y;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1196
|
+
template <class _Tp, class _Up>
|
|
1197
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1198
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() < declval<const _Up&>()), bool),
|
|
1199
|
+
bool>
|
|
1200
|
+
operator<(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1201
|
+
{
|
|
1202
|
+
if (!static_cast<bool>(__y))
|
|
1203
|
+
{
|
|
1204
|
+
return false;
|
|
1205
|
+
}
|
|
1206
|
+
if (!static_cast<bool>(__x))
|
|
1207
|
+
{
|
|
1208
|
+
return true;
|
|
1209
|
+
}
|
|
1210
|
+
return *__x < *__y;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1214
|
+
template <class _Tp, class _Up>
|
|
1215
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1216
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() > declval<const _Up&>()), bool),
|
|
1217
|
+
bool>
|
|
1218
|
+
operator>(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1219
|
+
{
|
|
1220
|
+
if (!static_cast<bool>(__x))
|
|
1221
|
+
{
|
|
1222
|
+
return false;
|
|
1223
|
+
}
|
|
1224
|
+
if (!static_cast<bool>(__y))
|
|
1225
|
+
{
|
|
1226
|
+
return true;
|
|
1227
|
+
}
|
|
1228
|
+
return *__x > *__y;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1232
|
+
template <class _Tp, class _Up>
|
|
1233
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1234
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() <= declval<const _Up&>()), bool),
|
|
1235
|
+
bool>
|
|
1236
|
+
operator<=(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1237
|
+
{
|
|
1238
|
+
if (!static_cast<bool>(__x))
|
|
1239
|
+
{
|
|
1240
|
+
return true;
|
|
1241
|
+
}
|
|
1242
|
+
if (!static_cast<bool>(__y))
|
|
1243
|
+
{
|
|
1244
|
+
return false;
|
|
1245
|
+
}
|
|
1246
|
+
return *__x <= *__y;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1250
|
+
template <class _Tp, class _Up>
|
|
1251
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1252
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() >= declval<const _Up&>()), bool),
|
|
1253
|
+
bool>
|
|
1254
|
+
operator>=(const optional<_Tp>& __x, const optional<_Up>& __y)
|
|
1255
|
+
{
|
|
1256
|
+
if (!static_cast<bool>(__y))
|
|
1257
|
+
{
|
|
1258
|
+
return true;
|
|
1259
|
+
}
|
|
1260
|
+
if (!static_cast<bool>(__x))
|
|
1261
|
+
{
|
|
1262
|
+
return false;
|
|
1263
|
+
}
|
|
1264
|
+
return *__x >= *__y;
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
// Comparisons with nullopt
|
|
1268
|
+
template <class _Tp>
|
|
1269
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const optional<_Tp>& __x, nullopt_t) noexcept
|
|
1270
|
+
{
|
|
1271
|
+
return !static_cast<bool>(__x);
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
template <class _Tp>
|
|
1275
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(nullopt_t, const optional<_Tp>& __x) noexcept
|
|
1276
|
+
{
|
|
1277
|
+
return !static_cast<bool>(__x);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
template <class _Tp>
|
|
1281
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const optional<_Tp>& __x, nullopt_t) noexcept
|
|
1282
|
+
{
|
|
1283
|
+
return static_cast<bool>(__x);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
template <class _Tp>
|
|
1287
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(nullopt_t, const optional<_Tp>& __x) noexcept
|
|
1288
|
+
{
|
|
1289
|
+
return static_cast<bool>(__x);
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
template <class _Tp>
|
|
1293
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const optional<_Tp>&, nullopt_t) noexcept
|
|
1294
|
+
{
|
|
1295
|
+
return false;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
template <class _Tp>
|
|
1299
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(nullopt_t, const optional<_Tp>& __x) noexcept
|
|
1300
|
+
{
|
|
1301
|
+
return static_cast<bool>(__x);
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
template <class _Tp>
|
|
1305
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const optional<_Tp>& __x, nullopt_t) noexcept
|
|
1306
|
+
{
|
|
1307
|
+
return !static_cast<bool>(__x);
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
template <class _Tp>
|
|
1311
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(nullopt_t, const optional<_Tp>&) noexcept
|
|
1312
|
+
{
|
|
1313
|
+
return true;
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
template <class _Tp>
|
|
1317
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const optional<_Tp>& __x, nullopt_t) noexcept
|
|
1318
|
+
{
|
|
1319
|
+
return static_cast<bool>(__x);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
template <class _Tp>
|
|
1323
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(nullopt_t, const optional<_Tp>&) noexcept
|
|
1324
|
+
{
|
|
1325
|
+
return false;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
template <class _Tp>
|
|
1329
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const optional<_Tp>&, nullopt_t) noexcept
|
|
1330
|
+
{
|
|
1331
|
+
return true;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
template <class _Tp>
|
|
1335
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(nullopt_t, const optional<_Tp>& __x) noexcept
|
|
1336
|
+
{
|
|
1337
|
+
return !static_cast<bool>(__x);
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
// Comparisons with T
|
|
1341
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1342
|
+
template <class _Tp, class _Up>
|
|
1343
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1344
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() == declval<const _Up&>()), bool),
|
|
1345
|
+
bool>
|
|
1346
|
+
operator==(const optional<_Tp>& __x, const _Up& __v)
|
|
1347
|
+
{
|
|
1348
|
+
return static_cast<bool>(__x) ? *__x == __v : false;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1352
|
+
template <class _Tp, class _Up>
|
|
1353
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1354
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() == declval<const _Up&>()), bool),
|
|
1355
|
+
bool>
|
|
1356
|
+
operator==(const _Tp& __v, const optional<_Up>& __x)
|
|
1357
|
+
{
|
|
1358
|
+
return static_cast<bool>(__x) ? __v == *__x : false;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1362
|
+
template <class _Tp, class _Up>
|
|
1363
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1364
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() != declval<const _Up&>()), bool),
|
|
1365
|
+
bool>
|
|
1366
|
+
operator!=(const optional<_Tp>& __x, const _Up& __v)
|
|
1367
|
+
{
|
|
1368
|
+
return static_cast<bool>(__x) ? *__x != __v : true;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1372
|
+
template <class _Tp, class _Up>
|
|
1373
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1374
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() != declval<const _Up&>()), bool),
|
|
1375
|
+
bool>
|
|
1376
|
+
operator!=(const _Tp& __v, const optional<_Up>& __x)
|
|
1377
|
+
{
|
|
1378
|
+
return static_cast<bool>(__x) ? __v != *__x : true;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1382
|
+
template <class _Tp, class _Up>
|
|
1383
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1384
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() < declval<const _Up&>()), bool),
|
|
1385
|
+
bool>
|
|
1386
|
+
operator<(const optional<_Tp>& __x, const _Up& __v)
|
|
1387
|
+
{
|
|
1388
|
+
return static_cast<bool>(__x) ? *__x < __v : true;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1392
|
+
template <class _Tp, class _Up>
|
|
1393
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1394
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() < declval<const _Up&>()), bool),
|
|
1395
|
+
bool>
|
|
1396
|
+
operator<(const _Tp& __v, const optional<_Up>& __x)
|
|
1397
|
+
{
|
|
1398
|
+
return static_cast<bool>(__x) ? __v < *__x : false;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1402
|
+
template <class _Tp, class _Up>
|
|
1403
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1404
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() <= declval<const _Up&>()), bool),
|
|
1405
|
+
bool>
|
|
1406
|
+
operator<=(const optional<_Tp>& __x, const _Up& __v)
|
|
1407
|
+
{
|
|
1408
|
+
return static_cast<bool>(__x) ? *__x <= __v : true;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1412
|
+
template <class _Tp, class _Up>
|
|
1413
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1414
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() <= declval<const _Up&>()), bool),
|
|
1415
|
+
bool>
|
|
1416
|
+
operator<=(const _Tp& __v, const optional<_Up>& __x)
|
|
1417
|
+
{
|
|
1418
|
+
return static_cast<bool>(__x) ? __v <= *__x : false;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1422
|
+
template <class _Tp, class _Up>
|
|
1423
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1424
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() > declval<const _Up&>()), bool),
|
|
1425
|
+
bool>
|
|
1426
|
+
operator>(const optional<_Tp>& __x, const _Up& __v)
|
|
1427
|
+
{
|
|
1428
|
+
return static_cast<bool>(__x) ? *__x > __v : false;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1432
|
+
template <class _Tp, class _Up>
|
|
1433
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1434
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() > declval<const _Up&>()), bool),
|
|
1435
|
+
bool>
|
|
1436
|
+
operator>(const _Tp& __v, const optional<_Up>& __x)
|
|
1437
|
+
{
|
|
1438
|
+
return static_cast<bool>(__x) ? __v > *__x : true;
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1442
|
+
template <class _Tp, class _Up>
|
|
1443
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1444
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() >= declval<const _Up&>()), bool),
|
|
1445
|
+
bool>
|
|
1446
|
+
operator>=(const optional<_Tp>& __x, const _Up& __v)
|
|
1447
|
+
{
|
|
1448
|
+
return static_cast<bool>(__x) ? *__x >= __v : false;
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
_CCCL_EXEC_CHECK_DISABLE
|
|
1452
|
+
template <class _Tp, class _Up>
|
|
1453
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1454
|
+
_CCCL_TRAIT(is_convertible, decltype(declval<const _Tp&>() >= declval<const _Up&>()), bool),
|
|
1455
|
+
bool>
|
|
1456
|
+
operator>=(const _Tp& __v, const optional<_Up>& __x)
|
|
1457
|
+
{
|
|
1458
|
+
return static_cast<bool>(__x) ? __v >= *__x : true;
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
template <class _Tp>
|
|
1462
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
|
|
1463
|
+
#ifdef CCCL_ENABLE_OPTIONAL_REF
|
|
1464
|
+
_CCCL_TRAIT(is_reference, _Tp) ||
|
|
1465
|
+
#endif // CCCL_ENABLE_OPTIONAL_REF
|
|
1466
|
+
(_CCCL_TRAIT(is_move_constructible, _Tp) && _CCCL_TRAIT(is_swappable, _Tp)),
|
|
1467
|
+
void>
|
|
1468
|
+
swap(optional<_Tp>& __x, optional<_Tp>& __y) noexcept(noexcept(__x.swap(__y)))
|
|
1469
|
+
{
|
|
1470
|
+
__x.swap(__y);
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
#ifdef CCCL_ENABLE_OPTIONAL_REF
|
|
1474
|
+
template <class _Tp>
|
|
1475
|
+
class optional<_Tp&>
|
|
1476
|
+
{
|
|
1477
|
+
private:
|
|
1478
|
+
using __raw_type = remove_reference_t<_Tp>;
|
|
1479
|
+
__raw_type* __value_ = nullptr;
|
|
1480
|
+
|
|
1481
|
+
_CCCL_TEMPLATE(class _Ref, class _Arg)
|
|
1482
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_constructible, _Ref, _Arg))
|
|
1483
|
+
[[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI static constexpr _Ref __make_reference(_Arg&& __arg) noexcept
|
|
1484
|
+
{
|
|
1485
|
+
static_assert(_CCCL_TRAIT(is_reference, _Ref), "optional<T&>: make-reference requires a reference as argument");
|
|
1486
|
+
return _Ref(_CUDA_VSTD::forward<_Arg>(__arg));
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
// Needed to interface with optional<T>
|
|
1490
|
+
template <class>
|
|
1491
|
+
friend struct __optional_storage_base;
|
|
1492
|
+
|
|
1493
|
+
[[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp& __get() noexcept
|
|
1494
|
+
{
|
|
1495
|
+
return *__value_;
|
|
1496
|
+
}
|
|
1497
|
+
[[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& __get() const noexcept
|
|
1498
|
+
{
|
|
1499
|
+
return *__value_;
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
# if defined(_CCCL_BUILTIN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY)
|
|
1503
|
+
template <class _Up>
|
|
1504
|
+
static constexpr bool __from_temporary = reference_constructs_from_temporary_v<_Tp&, _Up>;
|
|
1505
|
+
# else
|
|
1506
|
+
template <class _Up>
|
|
1507
|
+
static constexpr bool __from_temporary = false;
|
|
1508
|
+
# endif // !_CCCL_BUILTIN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY
|
|
1509
|
+
|
|
1510
|
+
public:
|
|
1511
|
+
using value_type = __raw_type&;
|
|
1512
|
+
|
|
1513
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional() noexcept {}
|
|
1514
|
+
_CCCL_HIDE_FROM_ABI constexpr optional(const optional&) noexcept = default;
|
|
1515
|
+
_CCCL_HIDE_FROM_ABI constexpr optional(optional&&) noexcept = default;
|
|
1516
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(nullopt_t) noexcept {}
|
|
1517
|
+
|
|
1518
|
+
_CCCL_TEMPLATE(class _Arg)
|
|
1519
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_constructible, _Tp&, _Arg) _CCCL_AND(!__from_temporary<_Arg>))
|
|
1520
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(in_place_t, _Arg&& __arg) noexcept
|
|
1521
|
+
: __value_(_CUDA_VSTD::addressof(__make_reference<_Tp&>(_CUDA_VSTD::forward<_Arg>(__arg))))
|
|
1522
|
+
{}
|
|
1523
|
+
|
|
1524
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1525
|
+
_CCCL_REQUIRES((!__is_std_optional<decay_t<_Up>>::value) _CCCL_AND _CCCL_TRAIT(is_convertible, _Up, _Tp&)
|
|
1526
|
+
_CCCL_AND(!__from_temporary<_Up>))
|
|
1527
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(_Up&& __u) noexcept(
|
|
1528
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up>())))
|
|
1529
|
+
: __value_(_CUDA_VSTD::addressof(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u))))
|
|
1530
|
+
{}
|
|
1531
|
+
|
|
1532
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1533
|
+
_CCCL_REQUIRES((!__is_std_optional<decay_t<_Up>>::value) _CCCL_AND(!_CCCL_TRAIT(is_convertible, _Up, _Tp&))
|
|
1534
|
+
_CCCL_AND _CCCL_TRAIT(is_constructible, _Tp&, _Up) _CCCL_AND(!__from_temporary<_Up>))
|
|
1535
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(_Up&& __u) noexcept(
|
|
1536
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up>())))
|
|
1537
|
+
: __value_(_CUDA_VSTD::addressof(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u))))
|
|
1538
|
+
{}
|
|
1539
|
+
|
|
1540
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1541
|
+
_CCCL_REQUIRES((!__is_std_optional<decay_t<_Up>>::value) _CCCL_AND __from_temporary<_Up>)
|
|
1542
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(_Up&&) = delete;
|
|
1543
|
+
|
|
1544
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1545
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_convertible, _Up&, _Tp&) _CCCL_AND(!__from_temporary<_Up&>))
|
|
1546
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>& __u) noexcept(
|
|
1547
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up&>())))
|
|
1548
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1549
|
+
{}
|
|
1550
|
+
|
|
1551
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1552
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_convertible, _Up&, _Tp&)) _CCCL_AND _CCCL_TRAIT(is_constructible, _Tp&, _Up&)
|
|
1553
|
+
_CCCL_AND(!__from_temporary<_Up&>))
|
|
1554
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(optional<_Up>& __u) noexcept(
|
|
1555
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up&>())))
|
|
1556
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1557
|
+
{}
|
|
1558
|
+
|
|
1559
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1560
|
+
_CCCL_REQUIRES(__from_temporary<_Up&>)
|
|
1561
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>&) = delete;
|
|
1562
|
+
|
|
1563
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1564
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_convertible, const _Up&, _Tp&) _CCCL_AND(!__from_temporary<const _Up&>))
|
|
1565
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up>& __u) noexcept(
|
|
1566
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<const _Up&>())))
|
|
1567
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1568
|
+
{}
|
|
1569
|
+
|
|
1570
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1571
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_convertible, const _Up&, _Tp&)) _CCCL_AND _CCCL_TRAIT(
|
|
1572
|
+
is_constructible, _Tp&, const _Up&) _CCCL_AND(!__from_temporary<const _Up&>))
|
|
1573
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(const optional<_Up>& __u) noexcept(
|
|
1574
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<const _Up&>())))
|
|
1575
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1576
|
+
{}
|
|
1577
|
+
|
|
1578
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1579
|
+
_CCCL_REQUIRES(__from_temporary<const _Up&>)
|
|
1580
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up>&) = delete;
|
|
1581
|
+
|
|
1582
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1583
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_convertible, _Up, _Tp&) _CCCL_AND(!__from_temporary<_Up>))
|
|
1584
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>&& __u) noexcept(
|
|
1585
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up>())))
|
|
1586
|
+
: __value_(
|
|
1587
|
+
__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u.value()))) : nullptr)
|
|
1588
|
+
{}
|
|
1589
|
+
|
|
1590
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1591
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_convertible, _Up, _Tp&)) _CCCL_AND _CCCL_TRAIT(is_constructible, _Tp&, _Up)
|
|
1592
|
+
_CCCL_AND(!__from_temporary<_Up>))
|
|
1593
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(optional<_Up>&& __u) noexcept(
|
|
1594
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<_Up>())))
|
|
1595
|
+
: __value_(
|
|
1596
|
+
__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u.value()))) : nullptr)
|
|
1597
|
+
{}
|
|
1598
|
+
|
|
1599
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1600
|
+
_CCCL_REQUIRES(__from_temporary<_Up>)
|
|
1601
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(optional<_Up>&&) = delete;
|
|
1602
|
+
|
|
1603
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1604
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_convertible, const _Up, _Tp&) _CCCL_AND(!__from_temporary<const _Up>))
|
|
1605
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up>&& __u) noexcept(
|
|
1606
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<const _Up>())))
|
|
1607
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1608
|
+
{}
|
|
1609
|
+
|
|
1610
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1611
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_convertible, const _Up, _Tp&)) _CCCL_AND _CCCL_TRAIT(
|
|
1612
|
+
is_constructible, _Tp&, const _Up) _CCCL_AND(!__from_temporary<const _Up>))
|
|
1613
|
+
_LIBCUDACXX_HIDE_FROM_ABI explicit constexpr optional(const optional<_Up>&& __u) noexcept(
|
|
1614
|
+
noexcept(static_cast<_Tp&>(_CUDA_VSTD::declval<const _Up>())))
|
|
1615
|
+
: __value_(__u.has_value() ? _CUDA_VSTD::addressof(static_cast<_Tp&>(__u.value())) : nullptr)
|
|
1616
|
+
{}
|
|
1617
|
+
|
|
1618
|
+
_CCCL_TEMPLATE(class _Up)
|
|
1619
|
+
_CCCL_REQUIRES(__from_temporary<const _Up>)
|
|
1620
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional(const optional<_Up>&&) = delete;
|
|
1621
|
+
|
|
1622
|
+
_CCCL_HIDE_FROM_ABI constexpr optional& operator=(const optional&) noexcept = default;
|
|
1623
|
+
_CCCL_HIDE_FROM_ABI constexpr optional& operator=(optional&&) noexcept = default;
|
|
1624
|
+
|
|
1625
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional& operator=(nullopt_t) noexcept
|
|
1626
|
+
{
|
|
1627
|
+
__value_ = nullptr;
|
|
1628
|
+
return *this;
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
_CCCL_TEMPLATE(class _Up = _Tp)
|
|
1632
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_constructible, _Tp&, _Up) _CCCL_AND(!__from_temporary<_Up>))
|
|
1633
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp&
|
|
1634
|
+
emplace(_Up&& __u) noexcept(noexcept(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u))))
|
|
1635
|
+
{
|
|
1636
|
+
__value_ = _CUDA_VSTD::addressof(static_cast<_Tp&>(_CUDA_VSTD::forward<_Up>(__u)));
|
|
1637
|
+
return *__value_;
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void swap(optional& __rhs) noexcept
|
|
1641
|
+
{
|
|
1642
|
+
return _CUDA_VSTD::swap(__value_, __rhs.__value_);
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp* operator->() const noexcept
|
|
1646
|
+
{
|
|
1647
|
+
_CCCL_ASSERT(__value_ != nullptr, "optional operator-> called on a disengaged value");
|
|
1648
|
+
return __value_;
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp& operator*() const noexcept
|
|
1652
|
+
{
|
|
1653
|
+
_CCCL_ASSERT(__value_ != nullptr, "optional operator* called on a disengaged value");
|
|
1654
|
+
return *__value_;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept
|
|
1658
|
+
{
|
|
1659
|
+
return __value_ != nullptr;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr bool has_value() const noexcept
|
|
1663
|
+
{
|
|
1664
|
+
return __value_ != nullptr;
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp& value() const noexcept
|
|
1668
|
+
{
|
|
1669
|
+
if (__value_ != nullptr)
|
|
1670
|
+
{
|
|
1671
|
+
return *__value_;
|
|
1672
|
+
}
|
|
1673
|
+
else
|
|
1674
|
+
{
|
|
1675
|
+
__throw_bad_optional_access();
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
template <class _Up>
|
|
1680
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr remove_cvref_t<_Tp> value_or(_Up&& __v) const
|
|
1681
|
+
{
|
|
1682
|
+
static_assert(_CCCL_TRAIT(is_copy_constructible, _Tp), "optional<T&>::value_or: T must be copy constructible");
|
|
1683
|
+
static_assert(_CCCL_TRAIT(is_convertible, _Up, _Tp), "optional<T&>::value_or: U must be convertible to T");
|
|
1684
|
+
return __value_ != nullptr ? *__value_ : static_cast<_Tp>(_CUDA_VSTD::forward<_Up>(__v));
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
template <class _Func>
|
|
1688
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const
|
|
1689
|
+
{
|
|
1690
|
+
using _Up = invoke_result_t<_Func, _Tp&>;
|
|
1691
|
+
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
|
|
1692
|
+
"optional<T&>::and_then: Result of f(value()) must be a specialization of std::optional");
|
|
1693
|
+
if (__value_ != nullptr)
|
|
1694
|
+
{
|
|
1695
|
+
return _CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), *__value_);
|
|
1696
|
+
}
|
|
1697
|
+
return remove_cvref_t<_Up>();
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
template <class _Func>
|
|
1701
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const
|
|
1702
|
+
{
|
|
1703
|
+
using _Up = invoke_result_t<_Func, _Tp&>;
|
|
1704
|
+
static_assert(!_CCCL_TRAIT(is_array, _Up), "optional<T&>::transform: Result of f(value()) should not be an Array");
|
|
1705
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, in_place_t),
|
|
1706
|
+
"optional<T&>::transform: Result of f(value()) should not be std::in_place_t");
|
|
1707
|
+
static_assert(!_CCCL_TRAIT(is_same, _Up, nullopt_t),
|
|
1708
|
+
"optional<T&>::transform: Result of f(value()) should not be std::nullopt_t");
|
|
1709
|
+
if (__value_ != nullptr)
|
|
1710
|
+
{
|
|
1711
|
+
if constexpr (_CCCL_TRAIT(is_lvalue_reference, _Up))
|
|
1712
|
+
{
|
|
1713
|
+
return optional<_Up>(_CUDA_VSTD::invoke(_CUDA_VSTD::forward<_Func>(__f), *__value_));
|
|
1714
|
+
}
|
|
1715
|
+
else
|
|
1716
|
+
{
|
|
1717
|
+
return optional<_Up>(__optional_construct_from_invoke_tag{}, _CUDA_VSTD::forward<_Func>(__f), *__value_);
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
return optional<_Up>();
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
_CCCL_TEMPLATE(class _Func)
|
|
1724
|
+
_CCCL_REQUIRES(invocable<_Func>)
|
|
1725
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional or_else(_Func&& __f) const
|
|
1726
|
+
{
|
|
1727
|
+
using _Up = invoke_result_t<_Func>;
|
|
1728
|
+
static_assert(_CCCL_TRAIT(is_same, remove_cvref_t<_Up>, optional),
|
|
1729
|
+
"optional<T&>::or_else: Result of f() should be the same type as this optional");
|
|
1730
|
+
if (__value_ != nullptr)
|
|
1731
|
+
{
|
|
1732
|
+
return *this;
|
|
1733
|
+
}
|
|
1734
|
+
return _CUDA_VSTD::forward<_Func>(__f)();
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr void reset() noexcept
|
|
1738
|
+
{
|
|
1739
|
+
__value_ = nullptr;
|
|
1740
|
+
}
|
|
1741
|
+
};
|
|
1742
|
+
|
|
1743
|
+
#endif // CCCL_ENABLE_OPTIONAL_REF
|
|
1744
|
+
|
|
1745
|
+
_CCCL_TEMPLATE(class _Tp = nullopt_t::__secret_tag, class _Up)
|
|
1746
|
+
_CCCL_REQUIRES(_CCCL_TRAIT(is_same, _Tp, nullopt_t::__secret_tag))
|
|
1747
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional<decay_t<_Up>> make_optional(_Up&& __v)
|
|
1748
|
+
{
|
|
1749
|
+
return optional<decay_t<_Up>>(_CUDA_VSTD::forward<_Up>(__v));
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
_CCCL_TEMPLATE(class _Tp, class... _Args)
|
|
1753
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_reference, _Tp)))
|
|
1754
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional<_Tp> make_optional(_Args&&... __args)
|
|
1755
|
+
{
|
|
1756
|
+
return optional<_Tp>(in_place, _CUDA_VSTD::forward<_Args>(__args)...);
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
_CCCL_TEMPLATE(class _Tp, class _Up, class... _Args)
|
|
1760
|
+
_CCCL_REQUIRES((!_CCCL_TRAIT(is_reference, _Tp)))
|
|
1761
|
+
_LIBCUDACXX_HIDE_FROM_ABI constexpr optional<_Tp> make_optional(initializer_list<_Up> __il, _Args&&... __args)
|
|
1762
|
+
{
|
|
1763
|
+
return optional<_Tp>(in_place, __il, _CUDA_VSTD::forward<_Args>(__args)...);
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
#ifndef __cuda_std__
|
|
1767
|
+
template <class _Tp>
|
|
1768
|
+
struct _CCCL_TYPE_VISIBILITY_DEFAULT hash<__enable_hash_helper<optional<_Tp>, remove_const_t<_Tp>>>
|
|
1769
|
+
{
|
|
1770
|
+
# if _CCCL_STD_VER <= 2017 || defined(_LIBCUDACXX_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
|
1771
|
+
using argument_type _LIBCUDACXX_DEPRECATED = optional<_Tp>;
|
|
1772
|
+
using result_type _LIBCUDACXX_DEPRECATED = size_t;
|
|
1773
|
+
# endif
|
|
1774
|
+
|
|
1775
|
+
_LIBCUDACXX_HIDE_FROM_ABI size_t operator()(const optional<_Tp>& __opt) const
|
|
1776
|
+
{
|
|
1777
|
+
return static_cast<bool>(__opt) ? hash<remove_const_t<_Tp>>()(*__opt) : 0;
|
|
1778
|
+
}
|
|
1779
|
+
};
|
|
1780
|
+
#endif // __cuda_std__
|
|
1781
|
+
|
|
1782
|
+
_LIBCUDACXX_END_NAMESPACE_STD
|
|
1783
|
+
|
|
1784
|
+
#include <cuda/std/__cccl/epilogue.h>
|
|
1785
|
+
|
|
1786
|
+
#endif // _LIBCUDACXX_OPTIONAL
|