summaryrefslogtreecommitdiff
path: root/Source/Checks/cm_cxx17_check.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Checks/cm_cxx17_check.cpp')
-rw-r--r--Source/Checks/cm_cxx17_check.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp
new file mode 100644
index 000000000..593d9b263
--- /dev/null
+++ b/Source/Checks/cm_cxx17_check.cpp
@@ -0,0 +1,31 @@
+#include <cstdio>
+#include <iterator>
+#include <memory>
+#include <unordered_map>
+
+#ifdef _MSC_VER
+# include <comdef.h>
+#endif
+
+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
+
+ return *u + *ai + *(bi - 1) + (3 - static_cast<int>(ci));
+}