summaryrefslogtreecommitdiff
path: root/TestPrograms
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2020-08-06 00:39:40 -0400
committerJeffrey Walton <noloader@gmail.com>2020-08-06 00:39:40 -0400
commit029d92d412a7291ac35789a1f4bc26c48a41f32e (patch)
tree2611d4b0ee4a6b8d99ff172d70191b4a8115da6d /TestPrograms
parent66d7a2a6045d092a3d131cf06289e68b9ba46e3b (diff)
downloadcryptopp-git-029d92d412a7291ac35789a1f4bc26c48a41f32e.tar.gz
Add C++11, C++14 and C++17 support to configure.sh
Diffstat (limited to 'TestPrograms')
-rw-r--r--TestPrograms/test_cxx11_alignas.cxx10
-rw-r--r--TestPrograms/test_cxx11_alignof.cxx12
-rw-r--r--TestPrograms/test_cxx11_assert.cxx10
-rw-r--r--TestPrograms/test_cxx11_atomic.cxx14
-rw-r--r--TestPrograms/test_cxx11_constexpr.cxx10
-rw-r--r--TestPrograms/test_cxx11_deletefn.cxx20
-rw-r--r--TestPrograms/test_cxx11_dyninit.cxx20
-rw-r--r--TestPrograms/test_cxx11_enumtype.cxx7
-rw-r--r--TestPrograms/test_cxx11_lambda.cxx20
-rw-r--r--TestPrograms/test_cxx11_noexcept.cxx18
-rw-r--r--TestPrograms/test_cxx11_nullptr.cxx6
-rw-r--r--TestPrograms/test_cxx11_sync.cxx14
-rw-r--r--TestPrograms/test_cxx11_vartemplates.cxx9
-rw-r--r--TestPrograms/test_cxx14.cxx16
-rw-r--r--TestPrograms/test_cxx17.cxx16
-rw-r--r--TestPrograms/test_cxx17_assert.cxx10
-rw-r--r--TestPrograms/test_cxx17_exceptions.cxx11
17 files changed, 166 insertions, 57 deletions
diff --git a/TestPrograms/test_cxx11_alignas.cxx b/TestPrograms/test_cxx11_alignas.cxx
index 3debcba9..9b1504cf 100644
--- a/TestPrograms/test_cxx11_alignas.cxx
+++ b/TestPrograms/test_cxx11_alignas.cxx
@@ -1,5 +1,5 @@
-int main(int argc, char* argv[])
-{
- alignas(16) unsigned char x[16];
- return 0;
-}
+int main(int argc, char* argv[])
+{
+ alignas(16) unsigned char x[16];
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_alignof.cxx b/TestPrograms/test_cxx11_alignof.cxx
index a5b72fff..f2d701ce 100644
--- a/TestPrograms/test_cxx11_alignof.cxx
+++ b/TestPrograms/test_cxx11_alignof.cxx
@@ -1,6 +1,6 @@
-#include <cstddef>
-int main (int argc, char* argv[])
-{
- std::size_t n = alignof(int);
- return 0;
-}
+#include <cstddef>
+int main (int argc, char* argv[])
+{
+ std::size_t n = alignof(int);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_assert.cxx b/TestPrograms/test_cxx11_assert.cxx
new file mode 100644
index 00000000..7d37315d
--- /dev/null
+++ b/TestPrograms/test_cxx11_assert.cxx
@@ -0,0 +1,10 @@
+// https://en.cppreference.com/w/cpp/feature_test
+int main(int argc, char* argv[])
+{
+#if __cpp_static_assert >= 200410L
+ int x[1];
+#else
+ int x[-1];
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_atomic.cxx b/TestPrograms/test_cxx11_atomic.cxx
index 63d16489..93745e1b 100644
--- a/TestPrograms/test_cxx11_atomic.cxx
+++ b/TestPrograms/test_cxx11_atomic.cxx
@@ -1,7 +1,7 @@
-#include <atomic>
-int main(int argc, char* argv[])
-{
- std::atomic_flag f = ATOMIC_FLAG_INIT;
- std::atomic<bool> g (false);
- return 0;
-}
+#include <atomic>
+int main(int argc, char* argv[])
+{
+ std::atomic_flag f = ATOMIC_FLAG_INIT;
+ std::atomic<bool> g (false);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_constexpr.cxx b/TestPrograms/test_cxx11_constexpr.cxx
new file mode 100644
index 00000000..0551746c
--- /dev/null
+++ b/TestPrograms/test_cxx11_constexpr.cxx
@@ -0,0 +1,10 @@
+constexpr int fact(int n)
+{
+ return n <= 1 ? 1 : (n * fact(n - 1));
+}
+
+int main(int argc, char* argv[])
+{
+ fact(4);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_deletefn.cxx b/TestPrograms/test_cxx11_deletefn.cxx
index d1e3a78b..94e56744 100644
--- a/TestPrograms/test_cxx11_deletefn.cxx
+++ b/TestPrograms/test_cxx11_deletefn.cxx
@@ -1,10 +1,10 @@
-struct S {
- S() = delete;
- explicit S(int n) { }
-};
-
-int main (int argc, char* rgv[])
-{
- S s(1);
- return 0;
-}
+struct S {
+ S() = delete;
+ explicit S(int n) { }
+};
+
+int main (int argc, char* rgv[])
+{
+ S s(1);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_dyninit.cxx b/TestPrograms/test_cxx11_dyninit.cxx
index c826fa3f..fee28c7c 100644
--- a/TestPrograms/test_cxx11_dyninit.cxx
+++ b/TestPrograms/test_cxx11_dyninit.cxx
@@ -1,10 +1,10 @@
-// https://en.cppreference.com/w/cpp/feature_test
-int main(int argc, char* argv[])
-{
-#if __cpp_threadsafe_static_init >= 200806L
- int x[1];
-#else
- int x[-1];
-#endif
- return 0;
-}
+// https://en.cppreference.com/w/cpp/feature_test
+int main(int argc, char* argv[])
+{
+#if __cpp_threadsafe_static_init >= 200806L
+ int x[1];
+#else
+ int x[-1];
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_enumtype.cxx b/TestPrograms/test_cxx11_enumtype.cxx
new file mode 100644
index 00000000..5e066e42
--- /dev/null
+++ b/TestPrograms/test_cxx11_enumtype.cxx
@@ -0,0 +1,7 @@
+#include <cstddef>
+int main(int argc, char* argv[])
+{
+ enum Size : std::size_t { Zero=0, One=1, Two=2 };
+ Size s(Size::Zero);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_lambda.cxx b/TestPrograms/test_cxx11_lambda.cxx
index 7e28ecb8..d85b7af9 100644
--- a/TestPrograms/test_cxx11_lambda.cxx
+++ b/TestPrograms/test_cxx11_lambda.cxx
@@ -1,10 +1,10 @@
-// https://en.cppreference.com/w/cpp/feature_test
-int main(int argc, char* argv[])
-{
-#if __cpp_lambdas >= 200907L
- int x[1];
-#else
- int x[-1];
-#endif
- return 0;
-}
+// https://en.cppreference.com/w/cpp/feature_test
+int main(int argc, char* argv[])
+{
+#if __cpp_lambdas >= 200907L
+ int x[1];
+#else
+ int x[-1];
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_noexcept.cxx b/TestPrograms/test_cxx11_noexcept.cxx
new file mode 100644
index 00000000..95cca1bc
--- /dev/null
+++ b/TestPrograms/test_cxx11_noexcept.cxx
@@ -0,0 +1,18 @@
+#define GNUC_VERSION (__GNUC__*1000 + __GNUC_MAJOR__*10)
+#if (GNUC_VERSION >= 4060) || defined(__clang__)
+# pragma GCC diagnostic ignored "-Wterminate"
+#endif
+
+#include <stdexcept>
+
+void f(int n) noexcept(false)
+{
+ if (n > 2)
+ throw std::runtime_error("Oops");
+}
+
+int main(int argc, char* argv[])
+{
+ f(argc);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_nullptr.cxx b/TestPrograms/test_cxx11_nullptr.cxx
new file mode 100644
index 00000000..9dc0c977
--- /dev/null
+++ b/TestPrograms/test_cxx11_nullptr.cxx
@@ -0,0 +1,6 @@
+#include <cstddef>
+int main(int argc, char* argv[])
+{
+ int* p = nullptr;
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_sync.cxx b/TestPrograms/test_cxx11_sync.cxx
index 56076924..92c7b514 100644
--- a/TestPrograms/test_cxx11_sync.cxx
+++ b/TestPrograms/test_cxx11_sync.cxx
@@ -1,7 +1,7 @@
-#include <mutex>
-int main(int argc, char* argv[])
-{
- static std::mutex m;
- std::lock_guard<std::mutex> l(m);
- return 0;
-}
+#include <mutex>
+int main(int argc, char* argv[])
+{
+ std::mutex m;
+ std::lock_guard<std::mutex> l(m);
+ return 0;
+}
diff --git a/TestPrograms/test_cxx11_vartemplates.cxx b/TestPrograms/test_cxx11_vartemplates.cxx
new file mode 100644
index 00000000..2590c0d9
--- /dev/null
+++ b/TestPrograms/test_cxx11_vartemplates.cxx
@@ -0,0 +1,9 @@
+int main(int argc, char* argv[])
+{
+#if __cpp_variadic_templates >= 200704L
+ int x[1];
+#else
+ int x[-1];
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_cxx14.cxx b/TestPrograms/test_cxx14.cxx
new file mode 100644
index 00000000..1f024cd2
--- /dev/null
+++ b/TestPrograms/test_cxx14.cxx
@@ -0,0 +1,16 @@
+// https://stackoverflow.com/a/30940639
+#include <tuple>
+#include <functional>
+auto f()
+{
+ // this fn returns multiple values
+ int x = 5;
+ return std::make_tuple(x, 7);
+}
+
+int main(int argc, char* argv[])
+{
+ int a, b;
+ std::tie(a, b) = f();
+ return 0;
+}
diff --git a/TestPrograms/test_cxx17.cxx b/TestPrograms/test_cxx17.cxx
index 32dd43d2..ec97fe44 100644
--- a/TestPrograms/test_cxx17.cxx
+++ b/TestPrograms/test_cxx17.cxx
@@ -1,5 +1,17 @@
-#include <exception>
+// Real C++17 compilers provide 'if constexpr'
+#include <type_traits>
+
+template <typename T>
+auto get_value(T t)
+{
+ if constexpr (std::is_pointer_v<T>)
+ return t[0];
+ else
+ return t;
+}
+
int main(int argc, char* argv[])
{
- return 0 == std::uncaught_exceptions() ? 0 : 1;
+ char c = get_value(argv[0]);
+ return 0;
}
diff --git a/TestPrograms/test_cxx17_assert.cxx b/TestPrograms/test_cxx17_assert.cxx
new file mode 100644
index 00000000..a365789a
--- /dev/null
+++ b/TestPrograms/test_cxx17_assert.cxx
@@ -0,0 +1,10 @@
+// https://en.cppreference.com/w/cpp/feature_test
+int main(int argc, char* argv[])
+{
+#if __cpp_static_assert >= 201411L
+ int x[1];
+#else
+ int x[-1];
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_cxx17_exceptions.cxx b/TestPrograms/test_cxx17_exceptions.cxx
new file mode 100644
index 00000000..b2401a38
--- /dev/null
+++ b/TestPrograms/test_cxx17_exceptions.cxx
@@ -0,0 +1,11 @@
+// https://en.cppreference.com/w/cpp/feature_test
+#include <exception>
+int main(int argc, char* argv[])
+{
+#if __cpp_lib_uncaught_exceptions >= 201411L
+ int x = std::uncaught_exceptions();
+#else
+ int x[-1];
+#endif
+ return 0;
+}