--- Source/Checks/cm_cxx14_check.cpp.orig
+++ Source/Checks/cm_cxx14_check.cpp
@@ -1,15 +1,16 @@
-#include <cstdio>
-#include <iterator>
+// actually use c++14 feature to force the compiler to do something,
+// since it might otherwise try to optimize all of this out even if it
+// doesn't understand it.
+
+#include <iostream>
 #include <memory>
 
-int main()
+int
+main
+(void)
 {
-  int a[] = { 0, 1, 2 };
-  auto ai = std::cbegin(a);
-
-  int b[] = { 2, 1, 0 };
-  auto bi = std::cend(b);
-
-  std::unique_ptr<int> u(new int(0));
-  return *u + *ai + *(bi - 1);
+  std::unique_ptr < int > foo = std::make_unique < int > (4);
+  std::cout << "std::make_unique < int >(4) is '"
+            << *foo << "'" << std::endl;
+  return 0;
 }
--- Source/Checks/cm_cxx17_check.cpp.orig
+++ Source/Checks/cm_cxx17_check.cpp
@@ -1,31 +1,27 @@
-#include <cstdio>
-#include <iterator>
-#include <memory>
-#include <unordered_map>
+// requires c++17 or newer, so will fail tests of c++14 or earlier
+#include <optional>
 
-#ifdef _MSC_VER
-#  include <comdef.h>
-#endif
+#include <iostream>
+#include <string>
 
-int main()
-{
-  int a[] = { 0, 1, 2 };
-  auto ai = std::cbegin(a);
-
-  int b[] = { 2, 1, 0 };
-  auto bi = std::cend(b);
-
-  auto ci = std::size(a);
-
-  std::unique_ptr<int> u(new int(0));
-
-#ifdef _MSC_VER
-  // clang-cl has problems instantiating this constructor in C++17 mode
-  //  error: indirection requires pointer operand ('const _GUID' invalid)
-  //      return *_IID;
-  IUnknownPtr ptr{};
-  IDispatchPtr disp(ptr);
-#endif
+std::optional < std::string >
+create
+(bool b) {
+  if (b) {
+    return "foo!";
+  }
+  return {};
+}
 
-  return *u + *ai + *(bi - 1) + (3 - static_cast<int>(ci));
+int
+main
+(void)
+{
+  std::cout << "create(false) returned "
+            << create(false).value_or("empty")
+            << std::endl;
+  std::cout << "create(true) returned "
+            << create(true).value_or("empty")
+            << std::endl;
+  return 0;
 }