aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2016-04-14 22:23:05 -0400
committerJason Merrill <jason@gcc.gnu.org>2016-04-14 22:23:05 -0400
commit26144dde3b68a331a8db86a9c8eaaa63d572bce9 (patch)
treec7a53813d3d706b0dc74aadf3bfb2d89e39d703d /gcc/testsuite
parenteab43e698f00ecc489453c3811ec98d9cc094f69 (diff)
downloadgcc-26144dde3b68a331a8db86a9c8eaaa63d572bce9.zip
gcc-26144dde3b68a331a8db86a9c8eaaa63d572bce9.tar.gz
gcc-26144dde3b68a331a8db86a9c8eaaa63d572bce9.tar.bz2
re PR c++/70528 (bogus error: constructor required before non-static data member)
PR c++/70528 * class.c (type_has_constexpr_default_constructor): Return true for an implicitly declared constructor. From-SVN: r235002
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr70528.C16
5 files changed, 21 insertions, 4 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
index 45e1ed2..42ca30a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C
@@ -3,6 +3,7 @@
template <typename Tp>
struct C {
+ C() = default;
constexpr C(const Tp& r) { }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
index a67505d..8d352d0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
@@ -7,6 +7,6 @@ struct A {
struct B: A { };
constexpr int f(B b) { return b.i; }
-struct C { C(); }; // { dg-message "calls non-constexpr" }
-struct D: C { }; // { dg-message "no constexpr constructor" }
+struct C { C(); }; // { dg-message "" }
+struct D: C { }; // { dg-message "" }
constexpr int g(D d) { return 42; } // { dg-error "invalid type" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
index 30e0a64..bf95b24 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
@@ -6,6 +6,6 @@ struct A
A(int);
};
-struct B : A {}; // { dg-error "no matching" }
+struct B : A {}; // { dg-message "" }
constexpr int foo(B) { return 0; } // { dg-error "invalid type" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
index 7a22f88..7e2d58b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
+++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C
@@ -8,7 +8,7 @@ struct A
struct B : A
{
- using A::A; // { dg-error "inherited" }
+ using A::A;
};
constexpr B b; // { dg-error "literal" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr70528.C b/gcc/testsuite/g++.dg/cpp0x/pr70528.C
new file mode 100644
index 0000000..af1c84e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr70528.C
@@ -0,0 +1,16 @@
+// PR c++/70258
+// { dg-do compile { target c++11 } }
+
+template <class T>
+struct H
+{
+ template <typename A = T, typename = decltype (A())>
+ H ();
+};
+
+struct J {
+ struct K {
+ int First = 0;
+ };
+ H<K> FunctionMDInfo;
+};