summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-12-04 13:22:31 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-12-04 13:22:31 +0000
commit7b48bf2011b4020c4a5a2d5d4149b03983f72cc2 (patch)
treeb07a064ee6bddbe6ddf73a98a9c131b5ab6a0f5f /gcc/testsuite/g++.dg/cpp0x
parent8cd167a5ad8baf4988e07fcbc9c9cc338c02d3d1 (diff)
downloadgcc-tarball-7b48bf2011b4020c4a5a2d5d4149b03983f72cc2.tar.gz
gcc-5.3.0gcc-5.3.0
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alignas1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alignas2.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/anon-union1.C27
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C29
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/local-type1.C19
7 files changed, 141 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C
new file mode 100644
index 0000000000..2734075390
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C
@@ -0,0 +1,24 @@
+// PR c++/67021
+// { dg-do compile { target c++11 } }
+
+template<typename> struct Dummy;
+template<> struct Dummy<int> {};
+
+template <class...>
+struct all_same { static constexpr bool value = true; };
+template <class T, class...Rest>
+struct all_same<T, T, Rest...> : all_same<T, Rest...> {};
+template <class T, class U, class...Rest>
+struct all_same<T, U, Rest...> { static constexpr bool value = false; };
+
+template <class R>
+using ValueType = int;
+
+template <class I>
+constexpr bool A(I i) {
+ return all_same<ValueType<I>, ValueType<decltype(i++)>>::value;
+}
+
+int main() {
+ static_assert(A(42), "");
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/alignas1.C b/gcc/testsuite/g++.dg/cpp0x/alignas1.C
new file mode 100644
index 0000000000..d73c875d63
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alignas1.C
@@ -0,0 +1,16 @@
+// PR c++/65734
+// { dg-do compile { target c++11 } }
+
+template <class T> struct A
+{
+ T t;
+};
+
+typedef A<int> T[4] alignas (2 * alignof (int));
+A<int> a[4];
+
+typedef A<char> T2[4] alignas (2 * alignof (int));
+
+#define SA(X) static_assert((X),#X)
+SA(alignof (T) == 2 * alignof(int));
+SA(alignof (T2) == 2 * alignof(int));
diff --git a/gcc/testsuite/g++.dg/cpp0x/alignas2.C b/gcc/testsuite/g++.dg/cpp0x/alignas2.C
new file mode 100644
index 0000000000..2e7d051c88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alignas2.C
@@ -0,0 +1,20 @@
+// PR c++/65734
+// { dg-do compile { target c++11 } }
+
+template <typename T>
+struct BVector
+{
+ T t;
+};
+BVector<int> m;
+
+template <template <class> class T>
+struct BV2
+{
+ typedef T<float> value_type alignas (16);
+ value_type v;
+};
+BV2<BVector> m2;
+
+#define SA(X) static_assert((X),#X)
+SA(alignof (BV2<BVector>::value_type) == 16);
diff --git a/gcc/testsuite/g++.dg/cpp0x/anon-union1.C b/gcc/testsuite/g++.dg/cpp0x/anon-union1.C
new file mode 100644
index 0000000000..19f6291211
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/anon-union1.C
@@ -0,0 +1,27 @@
+// PR c++/66583
+// { dg-do run { target c++11 } }
+
+template <class T>
+T&& move(T& t) { return static_cast<T&&>(t); }
+
+struct A {
+ A() { };
+ A(const A&) { }
+};
+
+struct B {
+ union {
+ int m_1 = 0;
+ int m_2;
+ };
+ A dummy;
+};
+
+int main()
+{
+ B b;
+ b.m_1 = 1;
+ B c = move(b);
+ if (c.m_1 != 1)
+ __builtin_abort();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C
new file mode 100644
index 0000000000..e2a6e865e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C
@@ -0,0 +1,6 @@
+// PR c++/68087
+// { dg-do compile { target c++11 } }
+
+constexpr char c[] = "hello";
+constexpr const char *p = c;
+constexpr char ch = *(p-1); // { dg-error "array subscript" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
new file mode 100644
index 0000000000..3ebdf3b36a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
@@ -0,0 +1,29 @@
+// PR c++/67244
+// { dg-do compile { target c++11 } }
+
+class A {
+public:
+ int operator*();
+};
+template <typename T, typename Predicate>
+void searchGen(int, int, T, Predicate p4) {
+ p4(0);
+}
+template <typename...> struct B;
+template <typename MetaFunction, typename Type, typename... Types>
+struct B<MetaFunction, Type, Types...> {
+ static void exec() { MetaFunction::template exec<Type>; }
+};
+template <typename MetaFunction, typename... Types> void forEachType() {
+ B<MetaFunction, Types...>::exec;
+}
+namespace {
+struct C {
+ template <typename T> void exec() {
+ A __trans_tmp_1;
+ const auto target = *__trans_tmp_1;
+ searchGen(0, 0, 0, [=](T) { [=] { target; }; });
+ }
+};
+}
+void ____C_A_T_C_H____T_E_S_T____75() { forEachType<C, int>; }
diff --git a/gcc/testsuite/g++.dg/cpp0x/local-type1.C b/gcc/testsuite/g++.dg/cpp0x/local-type1.C
new file mode 100644
index 0000000000..73bfd16738
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/local-type1.C
@@ -0,0 +1,19 @@
+// PR c++/51048
+// { dg-do compile { target c++11 } }
+
+template<typename X>
+struct A {
+ virtual void DoPush(X const& x) = 0;
+ void Push(X const& x) { DoPush(x); }
+};
+
+template<typename X>
+struct B : A<X> {
+ using A<X>::Push;
+ virtual void DoPush(X const&) { }
+};
+
+int main() {
+ enum S { };
+ B<S>().Push(S());
+}