diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake
index e550e641aedb44c764f957ba6224e667f36a0be6..18dbaf8a135e33301e88eaa2554f28c40ca70c1c 100644
--- a/Source/Checks/cm_cxx_features.cmake
+++ b/Source/Checks/cm_cxx_features.cmake
@@ -32,6 +32,7 @@ function(cm_check_cxx_feature name)
 endfunction()
 
 if(CMAKE_CXX_STANDARD)
+  cm_check_cxx_feature(override)
   cm_check_cxx_feature(unordered_map)
   cm_check_cxx_feature(unordered_set)
 endif()
diff --git a/Source/Checks/cm_cxx_override.cxx b/Source/Checks/cm_cxx_override.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..9395a0a23b7019ff2cc49c8a107a9566bc5d805e
--- /dev/null
+++ b/Source/Checks/cm_cxx_override.cxx
@@ -0,0 +1,20 @@
+struct Foo
+{
+  virtual int test() const = 0;
+};
+
+struct Bar : Foo
+{
+  int test() const override { return 0; }
+};
+
+int test(Foo const& foo)
+{
+  return foo.test();
+}
+
+int main()
+{
+  Bar const bar;
+  return test(bar);
+}
diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in
index a723942ba13cad21acd595b39f79fdd701e249a2..a8d4f58c6b454e36a782798d85b72f014971c996 100644
--- a/Source/cmConfigure.cmake.h.in
+++ b/Source/cmConfigure.cmake.h.in
@@ -29,9 +29,16 @@
 #cmakedefine CMAKE_USE_ELF_PARSER
 #cmakedefine CMAKE_USE_MACH_PARSER
 #cmakedefine CMAKE_ENCODING_UTF8
+#cmakedefine CMake_HAVE_CXX_OVERRIDE
 #cmakedefine CMake_HAVE_CXX_UNORDERED_MAP
 #cmakedefine CMake_HAVE_CXX_UNORDERED_SET
 #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
 #define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
 
+#ifdef CMake_HAVE_CXX_OVERRIDE
+#define CM_OVERRIDE override
+#else
+#define CM_OVERRIDE
+#endif
+
 #endif
diff --git a/bootstrap b/bootstrap
index 27cf9d861eafb05d40cf8bfa16d1ed18d8bdc7fa..a9f340226c05f15e051fcd9a35ad245a87ac1360 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1272,6 +1272,7 @@ cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP_BINARY_DIR \"${CMAKE_
 cmake_report cmConfigure.h${_tmp} "#define CMAKE_BIN_DIR \"/bootstrap-not-insalled\""
 cmake_report cmConfigure.h${_tmp} "#define CMAKE_DATA_DIR \"/bootstrap-not-insalled\""
 cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP"
+cmake_report cmConfigure.h${_tmp} "#define CM_OVERRIDE"
 
 # Regenerate configured headers
 for h in Configure VersionConfig; do