--- Source/Checks/cm_cxx14_check.cpp.orig +++ Source/Checks/cm_cxx14_check.cpp @@ -1,9 +1,18 @@ +// 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 + #include #include #include int main() { + std::unique_ptr < int > foo = std::make_unique < int > (4); + std::cout << "std::make_unique < int >(4) is '" + << *foo << "'" << std::endl; + int a[] = { 0, 1, 2 }; auto ai = std::cbegin(a); --- Source/Checks/cm_cxx17_check.cpp.orig +++ Source/Checks/cm_cxx17_check.cpp @@ -1,3 +1,9 @@ +// actually use c++17 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 +#include + #include #include #include @@ -15,6 +21,15 @@ return item.get(); } +std::optional < std::string > +create +(bool b) { + if (b) { + return "foo!"; + } + return {}; +} + int main() { int a[] = { 0, 1, 2 }; @@ -38,6 +53,13 @@ IDispatchPtr disp(ptr); #endif + std::cout << "create(false) returned " + << create(false).value_or("empty") + << std::endl; + std::cout << "create(true) returned " + << create(true).value_or("empty") + << std::endl; + std::optional oi = 0; return *u + *ai + *(bi - 1) + (3 - static_cast(ci)) + oi.value();