diff options
author | Jeffrey Walton <noloader@gmail.com> | 2020-08-06 00:39:40 -0400 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2020-08-06 00:39:40 -0400 |
commit | 029d92d412a7291ac35789a1f4bc26c48a41f32e (patch) | |
tree | 2611d4b0ee4a6b8d99ff172d70191b4a8115da6d /TestPrograms | |
parent | 66d7a2a6045d092a3d131cf06289e68b9ba46e3b (diff) | |
download | cryptopp-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.cxx | 10 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_alignof.cxx | 12 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_assert.cxx | 10 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_atomic.cxx | 14 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_constexpr.cxx | 10 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_deletefn.cxx | 20 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_dyninit.cxx | 20 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_enumtype.cxx | 7 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_lambda.cxx | 20 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_noexcept.cxx | 18 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_nullptr.cxx | 6 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_sync.cxx | 14 | ||||
-rw-r--r-- | TestPrograms/test_cxx11_vartemplates.cxx | 9 | ||||
-rw-r--r-- | TestPrograms/test_cxx14.cxx | 16 | ||||
-rw-r--r-- | TestPrograms/test_cxx17.cxx | 16 | ||||
-rw-r--r-- | TestPrograms/test_cxx17_assert.cxx | 10 | ||||
-rw-r--r-- | TestPrograms/test_cxx17_exceptions.cxx | 11 |
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;
+}
|