diff --git a/stl/inc/__msvc_all_public_headers.hpp b/stl/inc/__msvc_all_public_headers.hpp index 90a110d741c..e05d9e5dc32 100644 --- a/stl/inc/__msvc_all_public_headers.hpp +++ b/stl/inc/__msvc_all_public_headers.hpp @@ -24,7 +24,10 @@ #include #endif // !defined(_MSVC_TESTING_NVCC) +#ifndef _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#endif // !defined(_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING) + #define _SILENCE_CXX20_CISO646_REMOVED_WARNING #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS diff --git a/stl/inc/__msvc_iter_core.hpp b/stl/inc/__msvc_iter_core.hpp index 619e97aa65d..47d6efc944d 100644 --- a/stl/inc/__msvc_iter_core.hpp +++ b/stl/inc/__msvc_iter_core.hpp @@ -283,7 +283,11 @@ struct _Iter_traits_category4 { template concept _Cpp17_random_delta = +#if defined(__CUDACC__) && !defined(__clang__) // TRANSITION, CUDA 12.5 + totally_ordered<_It> && requires(_It __i, typename incrementable_traits<_It>::difference_type __n) { +#else // ^^^ workaround / no workaround vvv totally_ordered<_It> && requires(_It __i, incrementable_traits<_It>::difference_type __n) { +#endif // ^^^ no workaround ^^^ { __i += __n } -> same_as<_It&>; { __i -= __n } -> same_as<_It&>; { __i + __n } -> same_as<_It>; diff --git a/tests/std/tests/GH_000639_nvcc_include_all/env.lst b/tests/std/tests/GH_000639_nvcc_include_all/env.lst index 633ab107731..d2f0a5adb98 100644 --- a/tests/std/tests/GH_000639_nvcc_include_all/env.lst +++ b/tests/std/tests/GH_000639_nvcc_include_all/env.lst @@ -5,3 +5,7 @@ PM_COMPILER="nvcc" PM_CL="--x cu -Xcompiler -Od,-EHsc,-nologo,-W4,-WX,-openmp" RUNALL_CROSSLIST PM_CL="-Xcompiler -MT" PM_CL="--debug -Xcompiler -MTd" +RUNALL_CROSSLIST +PM_CL="-std=c++14" +PM_CL="-std=c++17 -D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" +PM_CL="-std=c++20"