PR c++/63194
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Oct 2014 02:26:33 +0000 (02:26 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Oct 2014 02:26:33 +0000 (02:26 +0000)
* method.c (defaulted_late_check): Call maybe_instantiate_noexcept.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216114 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/method.c
gcc/testsuite/g++.dg/cpp0x/noexcept25.C [new file with mode: 0644]

index 3e2ab6e..acdb354 100644 (file)
@@ -1,5 +1,8 @@
 2014-10-10  Jason Merrill  <jason@redhat.com>
 
+       PR c++/63194
+       * method.c (defaulted_late_check): Call maybe_instantiate_noexcept.
+
        * method.c (implicitly_declare_fn): Handle deleted lambda default
        ctor and copy assop here.
        * class.c (check_bases_and_members): Not here.
index dce2d2b..418ed88 100644 (file)
@@ -1979,6 +1979,7 @@ defaulted_late_check (tree fn)
      is explicitly defaulted on its first declaration, (...) it is
      implicitly considered to have the same exception-specification as if
      it had been implicitly declared.  */
+  maybe_instantiate_noexcept (fn);
   tree fn_spec = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (fn));
   if (!fn_spec)
     {
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept25.C b/gcc/testsuite/g++.dg/cpp0x/noexcept25.C
new file mode 100644 (file)
index 0000000..e79b786
--- /dev/null
@@ -0,0 +1,12 @@
+// PR c++/63194
+// { dg-do compile { target c++11 } }
+
+template <int>
+class A {
+ public:
+  A() noexcept(noexcept(0)) = default;
+};
+class B {
+  A<0> m_points;
+};
+void fn1(A<0>, A<0>) { B(); }