diff --git a/CMake/VTKConfig.cmake.in b/CMake/VTKConfig.cmake.in
index cbbfd6d343746e4646f97e9258b32d9e9c11174c..627b32ddaedb5efa6a63f217dd76212928b0ab96 100644
--- a/CMake/VTKConfig.cmake.in
+++ b/CMake/VTKConfig.cmake.in
@@ -12,6 +12,17 @@ if (CMAKE_VERSION VERSION_LESS "3.3")
     message(FATAL_ERROR "VTK now requires CMake 3.3 or newer")
   endif()
 
+# Make sure we have C++11 enabled.
+# If CMake used to build VTK failed to detect what compiler is being used,
+# allow an escape for advanced users
+set(VTK_IGNORE_CMAKE_CXX11_CHECKS @VTK_IGNORE_CMAKE_CXX11_CHECKS@)
+if( NOT cxx_nullptr IN_LIST CMAKE_CXX11_COMPILE_FEATURES)
+  if(NOT VTK_IGNORE_CXX11_REQUIREMENT)
+    message(FATAL_ERROR "VTK now requires a compiler that supports C++11")
+  endif()
+endif()
+
+
 # The C and C++ flags added by VTK to the cmake-configured flags.
 SET(VTK_REQUIRED_C_FLAGS "@VTK_REQUIRED_C_FLAGS@")
 SET(VTK_REQUIRED_CXX_FLAGS "@VTK_REQUIRED_CXX_FLAGS@")
diff --git a/CMake/vtkModuleMacros.cmake b/CMake/vtkModuleMacros.cmake
index b5e34964e8c14ee015c69322123f6eb4003abfb1..e1b087725fac75b74e9a9089111c8edfe81f0338 100644
--- a/CMake/vtkModuleMacros.cmake
+++ b/CMake/vtkModuleMacros.cmake
@@ -545,7 +545,9 @@ function(vtk_add_library name)
   # We use compile features to specify that VTK requires C++11
   # But at the same time don't have to be concerned about
   # polluting non-VTK targets with that requirement
-  target_compile_features(${name} PUBLIC cxx_nullptr)
+  if(NOT VTK_IGNORE_CMAKE_CXX11_CHECKS)
+    target_compile_features(${name} PUBLIC cxx_nullptr)
+  endif()
   if(NOT ARGV1 STREQUAL OBJECT)
     vtk_target(${name})
   endif()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63e9f93d4911fe1f856040ef1c3c684abbd206c5..2a23de87435b73d369d49ce64fb4f08837e8ce82 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,6 @@
+cmake_policy(SET CMP0025 OLD)
 cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
+cmake_policy(SET CMP0025 OLD)
 
 # Set a consistent MACOSX_RPATH default across all CMake versions.
 # When CMake 2.8.12 is required, change this default to 1.
@@ -14,11 +16,22 @@ endif()
 project(VTK)
 
 # Make sure we have C++11 enabled.
-# Needed to make sure libraries and executables not built
-# through the module system use C++11
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
-set(CMAKE_CXX_EXTENSIONS False)
+# If CMake fails to detect what compiler is being used, allow an escape
+# for advanced users
+if( NOT cxx_nullptr IN_LIST CMAKE_CXX11_COMPILE_FEATURES)
+  option(VTK_IGNORE_CXX11_REQUIREMENT OFF)
+  if(NOT VTK_IGNORE_CMAKE_CXX11_CHECKS)
+    message(FATAL_ERROR "VTK now requires a compiler that supports C++11")
+  endif()
+endif()
+
+if(NOT VTK_IGNORE_CMAKE_CXX11_CHECKS)
+  # Needed to make sure libraries and executables not built by the
+  # vtkModuleMacros still have the C++11 compiler flags enabled
+  set(CMAKE_CXX_STANDARD 11)
+  set(CMAKE_CXX_STANDARD_REQUIRED True)
+  set(CMAKE_CXX_EXTENSIONS False)
+endif()
 
 # Objective-C++ compile flags.
 # CMake has no equivalent of CMAKE_CXX_FLAGS for Objective-C++ (bug #4756)