summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-08-22 12:28:08 (GMT)
committerBrad King <brad.king@kitware.com>2019-08-23 12:43:35 (GMT)
commit170fcd715f586cfd6b9f741c0572d472e0abe8ed (patch)
treecb76e69494bb4f043eddf8c4e2267a073286451a
parent43fe736b2bf272647fb24b481bdc9a585c0666ac (diff)
downloadCMake-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.cpp5
-rwxr-xr-xbootstrap16
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();
}
diff --git a/bootstrap b/bootstrap
index 4581239..17dc3e8 100755
--- a/bootstrap
+++ b/bootstrap
@@ -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"