Fix injected class name bug in cccl_resource_ref constraints, use cuda::std::optional #2188
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Inside a class template like
cccl_resource_ref<ResourceType>, the bare namecccl_resource_refrefers to the injected class name (the current instantiation), not the class template. Theis_specialization_of_vtrait requires a class template as its second argument, causing a type/value mismatch error.Use fully qualified names (
::rmm::detail::cccl_resource_refand::rmm::detail::cccl_async_resource_ref) to bypass the injected class name and correctly refer to the class template.Also replaced
std::optionalwithcuda::std::optionalto fix a failure wherermm::mr::thrust_allocatorderives fromthrust::device_malloc_allocatorwhich has__device__constructors.This fixes bugs observed in https://github.com/rapidsai/rmm/actions/runs/20351412120/job/58476756910?pr=2106.