diff options
author | Jason Merrill <jason@redhat.com> | 2010-02-10 16:48:35 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-02-10 16:48:35 -0500 |
commit | f1c3cf3c931a57f565ea7d4fe117875bc8701cd9 (patch) | |
tree | 1a4635e30a19420754667446c235f2ef0f178b88 /gcc | |
parent | 7a79ff3be3d08ef53b5b6ca9a0adb7fc84ebdb19 (diff) | |
download | gcc-f1c3cf3c931a57f565ea7d4fe117875bc8701cd9.zip gcc-f1c3cf3c931a57f565ea7d4fe117875bc8701cd9.tar.gz gcc-f1c3cf3c931a57f565ea7d4fe117875bc8701cd9.tar.bz2 |
PR c++/42983, core issue 906
PR c++/42983, core issue 906
* method.c (defaultable_fn_check): Check virtualness.
* include/std/thread (~_Impl_base): Move default out of line.
* libsupc++/nested_exception.h (~nested_exception): Likewise.
From-SVN: r156672
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/method.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted15.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted9.C | 4 |
5 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fd637fb..11ec213 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2010-02-10 Jason Merrill <jason@redhat.com> + PR c++/42983, core issue 906 + * method.c (defaultable_fn_check): Check virtualness. + +2010-02-10 Jason Merrill <jason@redhat.com> + PR c++/43016 * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index cda7ed3..ccc977d 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1069,6 +1069,9 @@ defaultable_fn_check (tree fn) if (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (fn))) error ("function %q+D defaulted on its first declaration " "must not have an exception-specification", fn); + if (DECL_VIRTUAL_P (fn)) + error ("%qD declared virtual cannot be defaulted in the class " + "body", fn); } else if (!processing_template_decl) defaulted_late_check (fn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c63c1ff..1ddd791 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2010-02-10 Jason Merrill <jason@redhat.com> + PR c++/42983, core issue 906 + * g++.dg/cpp0x/defaulted15.C: Add virtualness test. + * g++.dg/cpp0x/defaulted9.C: Move virtual default outside class. + PR c++/43016 * g++.dg/cpp0x/lambda/lambda-conv.C: Test for weakness. diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C index 092b560..b54cedb 100644 --- a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C @@ -41,3 +41,8 @@ struct G: public F // Can't be const because F copy ctor isn't. G(const G&) = default; // { dg-error "const" } }; + +struct H +{ + virtual ~H() = default; // { dg-error "declared virtual" } +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted9.C b/gcc/testsuite/g++.dg/cpp0x/defaulted9.C index f083479..1e5e2cb 100644 --- a/gcc/testsuite/g++.dg/cpp0x/defaulted9.C +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted9.C @@ -4,9 +4,11 @@ struct _Impl_base { _Impl_base() = default; - virtual ~_Impl_base() = default; + virtual ~_Impl_base(); }; +inline _Impl_base::~_Impl_base() = default; + template<typename _Tp> class _Impl : public _Impl_base { }; |