From: opencv_contrib upstream (in master and 5.0.0), backported to 4.12.0/4.13.0
Subject: cudev ptr2d/zip.hpp: select _CCCL_*_NAMESPACE_CUDA_STD on CUDA 13.2+

CUDA 13.2 reorganised CCCL, so the unconditional _LIBCUDACXX_BEGIN_NAMESPACE_STD
used to specialise std::tuple_size / tuple_element for ZipPtr no longer compiles
(the build dies at the first CUDA TU).  Guard the namespace macros exactly as
upstream master / 5.0.0 do.  Inert on CUDA < 13.2 and without cuda.
See https://github.com/istitov/stuff/issues/271

--- a/modules/cudev/include/opencv2/cudev/ptr2d/zip.hpp
+++ b/modules/cudev/include/opencv2/cudev/ptr2d/zip.hpp
@@ -179,7 +179,11 @@
 }}
 
 #if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ > 12 || (__CUDACC_VER_MAJOR__ == 12 && __CUDACC_VER_MINOR__ >= 4))
+#if (__CUDACC_VER_MAJOR__ > 13 || (__CUDACC_VER_MAJOR__ == 13 && __CUDACC_VER_MINOR__ >= 2))
+_CCCL_BEGIN_NAMESPACE_CUDA_STD
+#else
 _LIBCUDACXX_BEGIN_NAMESPACE_STD
+#endif
 
 template< class... Types >
 struct tuple_size< cv::cudev::ZipPtr<tuple<Types...> > >
@@ -198,7 +202,11 @@
 struct tuple_element<N, cv::cudev::ZipPtrSz<tuple<Types...> > >
 : tuple_element<N, tuple<Types...> > { };
 
+#if (__CUDACC_VER_MAJOR__ > 13 || (__CUDACC_VER_MAJOR__ == 13 && __CUDACC_VER_MINOR__ >= 2))
+_CCCL_END_NAMESPACE_CUDA_STD
+#else
 _LIBCUDACXX_END_NAMESPACE_STD
+#endif
 
 #endif
 #endif
