summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto49.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto50.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/dc9.C30
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist98.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept32.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr77655.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic172.C20
13 files changed, 182 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto49.C b/gcc/testsuite/g++.dg/cpp0x/auto49.C
new file mode 100644
index 00000000000..25b09dfdec1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto49.C
@@ -0,0 +1,12 @@
+// PR c++/84350
+// { dg-do compile { target c++11 } }
+
+template<typename... T> void foo(T... t)
+{
+ new auto(t...); // { dg-error "invalid use" }
+}
+
+void bar()
+{
+ foo();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto50.C b/gcc/testsuite/g++.dg/cpp0x/auto50.C
new file mode 100644
index 00000000000..814892d2afa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto50.C
@@ -0,0 +1,7 @@
+// PR c++/84348
+// { dg-do compile { target c++11 } }
+
+template<typename> struct A
+{
+ friend auto foo; // { dg-error "cannot be declared friend" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
new file mode 100644
index 00000000000..f187c425272
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
@@ -0,0 +1,14 @@
+// PR c++/84449
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ constexpr A (int) {}
+ ~A () = delete;
+};
+
+struct B
+{
+ A a;
+ constexpr B () : a (0) {} // { dg-error "use of deleted function" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
new file mode 100644
index 00000000000..4bf57b9e897
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
@@ -0,0 +1,15 @@
+// PR c++/83835
+// { dg-do compile { target c++11 } }
+
+struct Z
+{
+ void const * p_;
+ constexpr Z( void const * p ): p_( p ) {}
+ ~Z();
+};
+
+struct Y
+{
+ Z z_;
+ constexpr Y() noexcept: z_( this ) {}
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc9.C b/gcc/testsuite/g++.dg/cpp0x/dc9.C
new file mode 100644
index 00000000000..b87f5ce618d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/dc9.C
@@ -0,0 +1,30 @@
+// PR c++/70468
+// { dg-do compile { target c++11 } }
+// { dg-additional-options -w }
+
+struct S {};
+
+template < typename = S >
+class A
+{
+public:
+ A () : f0 (), f1 () {} // { dg-error "" }
+
+private:
+ typedef A<> f0;
+ int f1;
+};
+
+template < typename = S, typename = S >
+class B
+{
+};
+
+template < typename T1, typename T2 >
+B < T1, T2 > &operator<< (B < T1, T2 >&, const int)
+{
+ A<> ();
+}
+
+template
+B < S, S > &operator<< (B < S, S >&, const int);
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist98.C b/gcc/testsuite/g++.dg/cpp0x/initlist98.C
new file mode 100644
index 00000000000..4f2fcd20219
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist98.C
@@ -0,0 +1,17 @@
+// PR c++/83227
+// { dg-do compile { target c++11 } }
+
+#include <initializer_list>
+
+template <typename d> struct f {
+ f(std::initializer_list<d>) {}
+};
+
+struct h {};
+struct i : h {
+ i();
+};
+void foo(f<h>);
+int main() {
+ foo({i{}});
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C
new file mode 100644
index 00000000000..7544b270256
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C
@@ -0,0 +1,5 @@
+// PR c++/84455
+// { dg-do compile { target c++11 } }
+// { dg-options "--param ggc-min-heapsize=0" }
+
+#include "lambda-ice14.C"
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C
new file mode 100644
index 00000000000..04c44a3b57f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C
@@ -0,0 +1,8 @@
+// PR c++/84446
+// { dg-do compile { target c++11 } }
+
+template<int> void foo()
+{
+ int i,
+ i = [] { virtual }(); // { dg-error "redeclaration|expected" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C
new file mode 100644
index 00000000000..91498c4589a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C
@@ -0,0 +1,9 @@
+// PR c++/84429
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+void foo(int i)
+{
+ char x[i];
+ [&]{ [&]{ return x; }; };
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept32.C b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C
new file mode 100644
index 00000000000..9a435049599
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C
@@ -0,0 +1,14 @@
+// PR c++/84045
+// { dg-do compile { target c++11 } }
+
+template <typename T> struct K {
+ static const bool d = true;
+};
+template <typename T, typename> struct B {
+ typedef K<T> D;
+ void foo () noexcept (D::d);
+};
+template <typename T> struct P {
+ P () noexcept (K<T>::d);
+};
+P<int> p;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
new file mode 100644
index 00000000000..66d94e53824
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
@@ -0,0 +1,18 @@
+// PR c++/82764
+// { dg-do compile { target c++11 } }
+
+struct Empty {};
+struct Empty2 : Empty {};
+
+struct A : Empty2
+{
+ int x {1};
+ int y {2};
+};
+
+struct B
+{
+ A a {};
+};
+
+B b;
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr77655.C b/gcc/testsuite/g++.dg/cpp0x/pr77655.C
new file mode 100644
index 00000000000..ab2e942cbb8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr77655.C
@@ -0,0 +1,13 @@
+// PR c++/77655
+// { dg-do compile { target c++11 } }
+
+template <class F> void g(F);
+template <class... A>
+auto h(A &&... a) -> decltype(g(0, g<decltype(a)>(a)...)) { // { dg-error "no matching" }
+ h([] {}); // { dg-error "no matching" }
+}
+
+int main() {
+ h();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic172.C b/gcc/testsuite/g++.dg/cpp0x/variadic172.C
new file mode 100644
index 00000000000..d25d3029a9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic172.C
@@ -0,0 +1,20 @@
+// PR c++/84454
+// { dg-do compile { target c++11 } }
+
+template<class F, class... A>
+void
+g(F&&, A&&...)
+{}
+
+template<class... A>
+auto
+h(A&&... a) -> decltype(g(0, g<decltype(a)>(a)...))
+{
+ g(a...); // { dg-error "no match" }
+}
+
+int
+main()
+{
+ h();
+}