diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36c6831d568138dd51d5160e8dc1f3544ec3caf7..e70d89fa2225f521cb9421388b181d1c66bdda1f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -495,8 +495,9 @@ else()
    endif()
 endif()
 
-if (WALBERLA_BUILD_WITH_CUDA AND CUDA_VERSION VERSION_LESS "11.0")
+if (WALBERLA_BUILD_WITH_CUDA AND (CUDA_VERSION VERSION_LESS "11.0" OR CMAKE_VERSION VERSION_LESS 3.18.0))
    # CUDA < 11 does not support C++17. std::experimental::any works with C++14, unlike std::any.
+   set(CMAKE_CUDA_STANDARD 14)
    set(WALBERLA_USE_STD_EXPERIMENTAL_ANY 1)
 endif()
 
@@ -1051,7 +1052,6 @@ if ( WALBERLA_BUILD_WITH_CUDA )
 
       #CUDA_FOUND is need for our cmake mechanism
       set ( CUDA_FOUND TRUE )
-      set(CMAKE_CUDA_STANDARD_REQUIRED OFF)
     else()
       set ( WALBERLA_BUILD_WITH_CUDA FALSE )
     endif ( )