diff options
author | Brad King <brad.king@kitware.com> | 2019-08-22 12:28:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-08-23 12:43:35 (GMT) |
commit | 170fcd715f586cfd6b9f741c0572d472e0abe8ed (patch) | |
tree | cb76e69494bb4f043eddf8c4e2267a073286451a | |
parent | 43fe736b2bf272647fb24b481bdc9a585c0666ac (diff) | |
download | CMake-170fcd715f586cfd6b9f741c0572d472e0abe8ed.zip CMake-170fcd715f586cfd6b9f741c0572d472e0abe8ed.tar.gz CMake-170fcd715f586cfd6b9f741c0572d472e0abe8ed.tar.bz2 |
Extend C++17 feature checks to require std::optional
-rw-r--r-- | Source/Checks/cm_cxx17_check.cpp | 5 | ||||
-rwxr-xr-x | bootstrap | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp index 593d9b2..29863b1 100644 --- a/Source/Checks/cm_cxx17_check.cpp +++ b/Source/Checks/cm_cxx17_check.cpp @@ -1,6 +1,7 @@ #include <cstdio> #include <iterator> #include <memory> +#include <optional> #include <unordered_map> #ifdef _MSC_VER @@ -27,5 +28,7 @@ int main() IDispatchPtr disp(ptr); #endif - return *u + *ai + *(bi - 1) + (3 - static_cast<int>(ci)); + std::optional<int> oi = 0; + + return *u + *ai + *(bi - 1) + (3 - static_cast<int>(ci)) + oi.value(); } @@ -1146,6 +1146,20 @@ int check_cxx14() } #endif +#if __cplusplus >= 201703L +#include <optional> +int check_cxx17() +{ + std::optional<int> oi = 0; + return oi.value(); +} +#else +int check_cxx17() +{ + return 0; +} +#endif + class Class { public: @@ -1156,7 +1170,7 @@ private: int main() { auto const c = std::unique_ptr<Class>(new Class); - std::cout << c->Get() << check_cxx14() << std::endl; + std::cout << c->Get() << check_cxx14() << check_cxx17() << std::endl; return 0; } ' > "${TMPFILE}.cxx" |