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/move-return1.C22
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nsdmi10.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr39.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr65558.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae59.C19
7 files changed, 62 insertions, 6 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/move-return1.C b/gcc/testsuite/g++.dg/cpp0x/move-return1.C
new file mode 100644
index 00000000000..dc2b313fee6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/move-return1.C
@@ -0,0 +1,22 @@
+// PR c++/80452
+// { dg-do compile { target c++11 } }
+
+template<typename> struct check { };
+template<typename T> struct check<T&>;
+
+struct A {
+ A() = default;
+ A(A&&) = default;
+ A(const A&) = delete;
+};
+
+template <class T>
+struct B {
+ template <class U> B(U&&) { check<U> u; }
+};
+
+B<A> f()
+{
+ A a;
+ return a;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
index 0f06343958b..056d16dca4a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
@@ -2,7 +2,7 @@
struct A
{
- int i = (A(), 42); // { dg-error "constructor required" }
+ int i = (A(), 42); // { dg-error "" }
};
A a;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C
index 1a00ec0d6a9..a885a241279 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C
@@ -3,14 +3,14 @@
template<int> struct A
{
- int i = (A<0>(), 0); // { dg-error "recursive instantiation of non-static data" }
+ int i = (A<0>(), 0); // { dg-error "recursive instantiation of default" }
};
A<0> a;
template<int N> struct B
{
- B* p = new B<N>; // { dg-error "recursive instantiation of non-static data" }
+ B* p = new B<N>; // { dg-error "recursive instantiation of default" }
};
B<1> x;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
index 56f9ff08bdf..d8588b7f29e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
@@ -6,7 +6,7 @@ struct A1 {
int y1 = 1;
};
- A1(const B1& opts = B1()) {} // { dg-error "constructor" }
+ A1(const B1& opts = B1()) {} // { dg-error "default member initializer" }
};
struct A2 {
@@ -14,5 +14,5 @@ struct A2 {
int x2, y2 = 1;
};
- A2(const B2& opts = B2()) {} // { dg-error "constructor" }
+ A2(const B2& opts = B2()) {} // { dg-error "default member initializer" }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr39.C b/gcc/testsuite/g++.dg/cpp0x/nullptr39.C
new file mode 100644
index 00000000000..a34a6af73e9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr39.C
@@ -0,0 +1,15 @@
+// PR c++/81671
+// { dg-do compile { target c++11 } }
+
+namespace std { typedef decltype(nullptr) nullptr_t; }
+
+template<class R, class CB> struct Bar
+{};
+template<class R> struct Bar<R, std::nullptr_t>
+{
+ template<std::nullptr_t> struct Bind { constexpr static int const cb = 0; };
+};
+int foo()
+{
+ return Bar<int, decltype(nullptr)>::Bind<nullptr>::cb;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr65558.C b/gcc/testsuite/g++.dg/cpp0x/pr65558.C
index d294c95a657..12946b35eda 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr65558.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr65558.C
@@ -2,6 +2,6 @@
// { dg-do compile { target c++11 } }
inline namespace
-__attribute__((__abi_tag__)) // { dg-warning "ignoring .__abi_tag__. attribute on anonymous namespace" }
+__attribute__((__abi_tag__)) // { dg-warning "ignoring .abi_tag. attribute on anonymous namespace" }
{
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae59.C b/gcc/testsuite/g++.dg/cpp0x/sfinae59.C
new file mode 100644
index 00000000000..d1c730b6d23
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae59.C
@@ -0,0 +1,19 @@
+// PR c++/81359
+// { dg-do compile { target c++11 } }
+
+template<typename _Tp, typename = decltype(_Tp())>
+static int test(int);
+
+template<typename>
+static void test(...);
+
+template <class T, class = decltype(test<T>(0))>
+struct A { };
+
+struct B
+{
+ struct C {
+ int i = 0;
+ };
+ A<C> a;
+};