From 8dd410058f7acfd825e078dd9ef078677ebd929c Mon Sep 17 00:00:00 2001
From: Wiktor Bajor <69388767+Wiktor-99@users.noreply.github.com>
Date: Mon, 5 Jan 2026 14:20:50 +0100
Subject: [PATCH] Fix CUDA 12.9 transform_reduce ambiguity (#6386)

* Fix CUDA 12.9 transform_reduce ambiguity

* Use the thrust:: for the make_zip_iterator calls
---
 gpu/surface/src/cuda/convex_hull.cu | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gpu/surface/src/cuda/convex_hull.cu b/gpu/surface/src/cuda/convex_hull.cu
index 98e89cd703d..00b49dc082f 100644
--- a/gpu/surface/src/cuda/convex_hull.cu
+++ b/gpu/surface/src/cuda/convex_hull.cu
@@ -138,9 +138,9 @@ namespace pcl
 	    thrust::counting_iterator<int> cbeg(0);
 		thrust::counting_iterator<int> cend = cbeg + thrust::distance(beg, end);
 
-	    thrust::tuple<float, int> t = transform_reduce(
-		  make_zip_iterator(thrust::make_tuple(beg, cbeg)),
-		  make_zip_iterator(thrust::make_tuple(end, cend)),
+	    thrust::tuple<float, int> t = thrust::transform_reduce(
+		  thrust::make_zip_iterator(thrust::make_tuple(beg, cbeg)),
+		  thrust::make_zip_iterator(thrust::make_tuple(end, cend)),
 		  unop, init, binary);
 
 		return thrust::get<1>(t);
@@ -194,11 +194,11 @@ void pcl::device::PointStream::computeInitalSimplex()
   simplex.x1 = tr(p1);  simplex.x2 = tr(p2);  simplex.x3 = tr(p3);  simplex.x4 = tr(p4);
   simplex.i1 = minx;    simplex.i2 = maxx;    simplex.i3 = maxl;    simplex.i4 = maxp;
 
-  float maxy = transform_reduce(beg, end, Y(), std::numeric_limits<float>::min(), thrust::maximum<float>());
-  float miny = transform_reduce(beg, end, Y(), std::numeric_limits<float>::max(), thrust::minimum<float>());
+  float maxy = thrust::transform_reduce(beg, end, Y(), std::numeric_limits<float>::min(), thrust::maximum<float>());
+  float miny = thrust::transform_reduce(beg, end, Y(), std::numeric_limits<float>::max(), thrust::minimum<float>());
 
-  float maxz = transform_reduce(beg, end, Z(), std::numeric_limits<float>::min(), thrust::maximum<float>());
-  float minz = transform_reduce(beg, end, Z(), std::numeric_limits<float>::max(), thrust::minimum<float>());
+  float maxz = thrust::transform_reduce(beg, end, Z(), std::numeric_limits<float>::min(), thrust::maximum<float>());
+  float minz = thrust::transform_reduce(beg, end, Z(), std::numeric_limits<float>::max(), thrust::minimum<float>());
 
   float dx = (p2.x - p1.x);
   float dy = (maxy - miny);
