public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/42983]  New: [c++0x] Unvirtualzation of virtual destructor
@ 2010-02-06  7:58 lavock at gmail dot com
  2010-02-06 10:15 ` [Bug c++/42983] [c++0x] Unvirtualization " paolo dot carlini at oracle dot com
                   ` (20 more replies)
  0 siblings, 21 replies; 22+ messages in thread
From: lavock at gmail dot com @ 2010-02-06  7:58 UTC (permalink / raw)
  To: gcc-bugs

Hello,
The way to declare a inline virtual destructor within the class declaration
seems to unvirtualize it.
Trying the following code :

#include <iostream>

struct A {
  virtual ~A() = default;
};

struct B : A {
  virtual ~B() {
    std::cout << "B destructor" << std::endl;
  }
};

int main() {
  B* b = new B;
  A * ptrA = *b;
  delete ptrA;
  return 0;
}

Nothing appear on standard output.


-- 
           Summary: [c++0x] Unvirtualzation of virtual destructor
           Product: gcc
           Version: 4.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: lavock at gmail dot com
 GCC build triplet: -486-linux-gnu
  GCC host triplet: -486-linux-gnu
GCC target triplet: -i486-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [c++0x] Unvirtualization of virtual destructor
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
@ 2010-02-06 10:15 ` paolo dot carlini at oracle dot com
  2010-02-06 12:05 ` lavock at gmail dot com
                   ` (19 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-06 10:15 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 731 bytes --]



------- Comment #1 from paolo dot carlini at oracle dot com  2010-02-06 10:15 -------
Your testcase doesn't even compile:

42983.C: In function ‘int main()’:
42983.C:15:15: error: cannot convert ‘B’ to ‘A*’ in initialization


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID
            Summary|[c++0x] Unvirtualzation of  |[c++0x] Unvirtualization of
                   |virtual destructor          |virtual destructor


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [c++0x] Unvirtualization of virtual destructor
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
  2010-02-06 10:15 ` [Bug c++/42983] [c++0x] Unvirtualization " paolo dot carlini at oracle dot com
@ 2010-02-06 12:05 ` lavock at gmail dot com
  2010-02-06 20:15 ` [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual paolo dot carlini at oracle dot com
                   ` (18 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: lavock at gmail dot com @ 2010-02-06 12:05 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 862 bytes --]



------- Comment #2 from lavock at gmail dot com  2010-02-06 12:05 -------
(In reply to comment #1)
> Your testcase doesn't even compile:
> 
> 42983.C: In function ‘int main()’:
> 42983.C:15:15: error: cannot convert ‘B’ to ‘A*’ in initialization
> 

Sorry, my mistake, i've added an extra *...

#include <iostream>

struct A {
  virtual ~A() = default;
};

struct B : A {
  virtual ~B() {
    std::cout << "B destructor" << std::endl;
  }
};

int main() {
  B* b = new B;
  A * ptrA = b;
  delete ptrA;
  return 0;
}


-- 

lavock at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
  2010-02-06 10:15 ` [Bug c++/42983] [c++0x] Unvirtualization " paolo dot carlini at oracle dot com
  2010-02-06 12:05 ` lavock at gmail dot com
@ 2010-02-06 20:15 ` paolo dot carlini at oracle dot com
  2010-02-07 11:44 ` paolo dot carlini at oracle dot com
                   ` (17 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-06 20:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from paolo dot carlini at oracle dot com  2010-02-06 20:15 -------
Jason, can you have a look? Just in case it's a wrong code bug... Thanks in
advance.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (2 preceding siblings ...)
  2010-02-06 20:15 ` [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual paolo dot carlini at oracle dot com
@ 2010-02-07 11:44 ` paolo dot carlini at oracle dot com
  2010-02-08 12:35 ` jwakely dot gcc at gmail dot com
                   ` (16 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-07 11:44 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from paolo dot carlini at oracle dot com  2010-02-07 11:43 -------
*** Bug 42992 has been marked as a duplicate of this bug. ***


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |albrt2000 at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (3 preceding siblings ...)
  2010-02-07 11:44 ` paolo dot carlini at oracle dot com
@ 2010-02-08 12:35 ` jwakely dot gcc at gmail dot com
  2010-02-08 12:57 ` paolo dot carlini at oracle dot com
                   ` (15 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jwakely dot gcc at gmail dot com @ 2010-02-08 12:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from jwakely dot gcc at gmail dot com  2010-02-08 12:35 -------
n3000 says "Only special member functions may be explicitly defaulted, and the
implementation shall define them as if they had implicit definitions."

An implicit destructor is not virtual.

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#906 changes this
wording


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (4 preceding siblings ...)
  2010-02-08 12:35 ` jwakely dot gcc at gmail dot com
@ 2010-02-08 12:57 ` paolo dot carlini at oracle dot com
  2010-02-08 13:49 ` lavock at gmail dot com
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-08 12:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from paolo dot carlini at oracle dot com  2010-02-08 12:57 -------
Interesting. Thus I get Core 906 [Ready] as meaning that this snippet is just
illegal, and should be rejected, in other terms, this is an accept invalid,
right?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (5 preceding siblings ...)
  2010-02-08 12:57 ` paolo dot carlini at oracle dot com
@ 2010-02-08 13:49 ` lavock at gmail dot com
  2010-02-08 13:56 ` jwakely dot gcc at gmail dot com
                   ` (13 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: lavock at gmail dot com @ 2010-02-08 13:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from lavock at gmail dot com  2010-02-08 13:49 -------
(In reply to comment #5)
> n3000 says "Only special member functions may be explicitly defaulted, and the
> implementation shall define them as if they had implicit definitions."
> 
> An implicit destructor is not virtual.
> 

An implicit definition does not mean an implicit declaration.

Moreover, the norm use sometimes this syntax.

There is a thread in comp.std.c++ about this.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (6 preceding siblings ...)
  2010-02-08 13:49 ` lavock at gmail dot com
@ 2010-02-08 13:56 ` jwakely dot gcc at gmail dot com
  2010-02-08 13:58 ` albrt2000 at gmail dot com
                   ` (12 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jwakely dot gcc at gmail dot com @ 2010-02-08 13:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from jwakely dot gcc at gmail dot com  2010-02-08 13:56 -------
(In reply to comment #6)
> Interesting. Thus I get Core 906 [Ready] as meaning that this snippet is just
> illegal, and should be rejected, in other terms, this is an accept invalid,
> right?
> 

Yes, I believe 4.5.0 should reject this (but can't check if it does.)

I don't really know what 4.4.1 should do, it wasn't clear, which is why core
906 was opened to clarify it.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (7 preceding siblings ...)
  2010-02-08 13:56 ` jwakely dot gcc at gmail dot com
@ 2010-02-08 13:58 ` albrt2000 at gmail dot com
  2010-02-08 14:00 ` jwakely dot gcc at gmail dot com
                   ` (11 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: albrt2000 at gmail dot com @ 2010-02-08 13:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from albrt2000 at gmail dot com  2010-02-08 13:58 -------
(In reply to comment #6)
> Interesting. Thus I get Core 906 [Ready] as meaning that this snippet is just
> illegal, and should be rejected, in other terms, this is an accept invalid,
> right?
> 
Hi,
I'm not sure to understand your last comment (sorry I 'm not a natural english
speaker). Do you mean that virtual ~A() = default; should be an error ? If we
can not default virtual destructor, well, the feature seems less interesting.
I opened a discussion about this in comp.std.c++ (C++0x : virtual destructor
and =default) and Scott Meyers replies that this (virtual ~A() = default;)
should be correct. Those that should be a valid gcc problem.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (8 preceding siblings ...)
  2010-02-08 13:58 ` albrt2000 at gmail dot com
@ 2010-02-08 14:00 ` jwakely dot gcc at gmail dot com
  2010-02-08 14:05 ` jwakely dot gcc at gmail dot com
                   ` (10 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jwakely dot gcc at gmail dot com @ 2010-02-08 14:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jwakely dot gcc at gmail dot com  2010-02-08 14:00 -------
(In reply to comment #7)
>
> There is a thread in comp.std.c++ about this.

Yes, but I don't think anyone's mentioned core issue 906, which makes all the
arguments rather moot.  Read that resolution, not n3000.



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (9 preceding siblings ...)
  2010-02-08 14:00 ` jwakely dot gcc at gmail dot com
@ 2010-02-08 14:05 ` jwakely dot gcc at gmail dot com
  2010-02-08 14:24 ` albrt2000 at gmail dot com
                   ` (9 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jwakely dot gcc at gmail dot com @ 2010-02-08 14:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jwakely dot gcc at gmail dot com  2010-02-08 14:04 -------
(In reply to comment #9)
> I'm not sure to understand your last comment (sorry I 'm not a natural english
> speaker). Do you mean that virtual ~A() = default; should be an error ? If we

Yes.  GCC implements the resolution to core issue 906

> can not default virtual destructor, well, the feature seems less interesting.

You can do it, but not on the first declaration:

struct A {
  virtual ~A();
};

A::~A() = default;

I think this should be OK (but maybe not in GCC 4.4 only in 4.5)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (10 preceding siblings ...)
  2010-02-08 14:05 ` jwakely dot gcc at gmail dot com
@ 2010-02-08 14:24 ` albrt2000 at gmail dot com
  2010-02-08 14:25 ` albrt2000 at gmail dot com
                   ` (8 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: albrt2000 at gmail dot com @ 2010-02-08 14:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from albrt2000 at gmail dot com  2010-02-08 14:24 -------
Ok. So, gcc is conformant with the document you mentioned. I am reporting this
discussion in comp.std.c++ since it makes me think that this behaviour reduces
one of the interest of the default declaration.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (11 preceding siblings ...)
  2010-02-08 14:24 ` albrt2000 at gmail dot com
@ 2010-02-08 14:25 ` albrt2000 at gmail dot com
  2010-02-08 14:36 ` paolo dot carlini at oracle dot com
                   ` (7 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: albrt2000 at gmail dot com @ 2010-02-08 14:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from albrt2000 at gmail dot com  2010-02-08 14:25 -------
> 
> struct A {
>   virtual ~A();
> };
> 
> A::~A() = default;
> 
> I think this should be OK (but maybe not in GCC 4.4 only in 4.5)
> 
This already works in gcc 4.4.1 that I use.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (12 preceding siblings ...)
  2010-02-08 14:25 ` albrt2000 at gmail dot com
@ 2010-02-08 14:36 ` paolo dot carlini at oracle dot com
  2010-02-08 14:49 ` albrt2000 at gmail dot com
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-08 14:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from paolo dot carlini at oracle dot com  2010-02-08 14:36 -------
Basing on Core 906, seems rather straightforward that the snippet is
ill-formed, the only problem is that neither 4.4 nor current mainline reject
it. If that's the complete analysis, the issue is pretty low priority.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (13 preceding siblings ...)
  2010-02-08 14:36 ` paolo dot carlini at oracle dot com
@ 2010-02-08 14:49 ` albrt2000 at gmail dot com
  2010-02-08 15:10 ` jwakely dot gcc at gmail dot com
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: albrt2000 at gmail dot com @ 2010-02-08 14:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from albrt2000 at gmail dot com  2010-02-08 14:49 -------
(In reply to comment #14)
> Basing on Core 906, seems rather straightforward that the snippet is
> ill-formed, the only problem is that neither 4.4 nor current mainline reject
> it.

That's also should be the case for non public access :
struct A {
private : /* or protected */
  ~A() = default;
};
should also be illed formed according to that report.

> If that's the complete analysis, the issue is pretty low priority.
Destroying an object from a base class pointer whose destructor is not virtual
is an undefined behaviour according to the standard. I tend to think that
silently removing the virutal property when considering the default
declaration, introduces a serious bug in the code.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (14 preceding siblings ...)
  2010-02-08 14:49 ` albrt2000 at gmail dot com
@ 2010-02-08 15:10 ` jwakely dot gcc at gmail dot com
  2010-02-08 15:18 ` lavock at gmail dot com
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: jwakely dot gcc at gmail dot com @ 2010-02-08 15:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from jwakely dot gcc at gmail dot com  2010-02-08 15:10 -------
(In reply to comment #15)
> Destroying an object from a base class pointer whose destructor is not virtual
> is an undefined behaviour according to the standard. I tend to think that
> silently removing the virutal property when considering the default
> declaration, introduces a serious bug in the code.

Yes, but you're using an experimental implementation of an incomplete
specification.  Using it for serious code would be foolish, so I tend to agree
it's low priority




-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (15 preceding siblings ...)
  2010-02-08 15:10 ` jwakely dot gcc at gmail dot com
@ 2010-02-08 15:18 ` lavock at gmail dot com
  2010-02-08 15:28 ` paolo dot carlini at oracle dot com
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: lavock at gmail dot com @ 2010-02-08 15:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from lavock at gmail dot com  2010-02-08 15:18 -------
(In reply to comment #16)
> Yes, but you're using an experimental implementation of an incomplete
> specification.  Using it for serious code would be foolish, so I tend to agree
> it's low priority

Yes, i agree with low priority, but maybe don't mark available for this
feature, since it seems to be partially available.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (16 preceding siblings ...)
  2010-02-08 15:18 ` lavock at gmail dot com
@ 2010-02-08 15:28 ` paolo dot carlini at oracle dot com
  2010-02-10 21:49 ` jason at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-08 15:28 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from paolo dot carlini at oracle dot com  2010-02-08 15:27 -------
It is available, for sure. We are talking about trying to use the feature in a
case where the code is actually ill-formed, per a DR which is in the [Ready]
status, that is, a very advanced status, but still not fully resolved, not in
WP yet. It's just a little more than a purely diagnostic issue.

By the way, you bet, if you start fiddling very hard, you will find ill-formed
code getting through in *much* older areas, not having anything to do with
C++1x, very basic parts of C++98, yes.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (17 preceding siblings ...)
  2010-02-08 15:28 ` paolo dot carlini at oracle dot com
@ 2010-02-10 21:49 ` jason at gcc dot gnu dot org
  2010-02-10 22:00 ` jason at gcc dot gnu dot org
  2010-02-17  0:22 ` paolo dot carlini at oracle dot com
  20 siblings, 0 replies; 22+ messages in thread
From: jason at gcc dot gnu dot org @ 2010-02-10 21:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from jason at gcc dot gnu dot org  2010-02-10 21:48 -------
Subject: Bug 42983

Author: jason
Date: Wed Feb 10 21:48:35 2010
New Revision: 156672

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156672
Log:
        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.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/method.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
    trunk/gcc/testsuite/g++.dg/cpp0x/defaulted9.C
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/std/thread
    trunk/libstdc++-v3/libsupc++/nested_exception.h
   
trunk/libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
   
trunk/libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (18 preceding siblings ...)
  2010-02-10 21:49 ` jason at gcc dot gnu dot org
@ 2010-02-10 22:00 ` jason at gcc dot gnu dot org
  2010-02-17  0:22 ` paolo dot carlini at oracle dot com
  20 siblings, 0 replies; 22+ messages in thread
From: jason at gcc dot gnu dot org @ 2010-02-10 22:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from jason at gcc dot gnu dot org  2010-02-10 22:00 -------
Fixed (to require defaulting outside the class) for 4.5.


-- 

jason at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual
  2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
                   ` (19 preceding siblings ...)
  2010-02-10 22:00 ` jason at gcc dot gnu dot org
@ 2010-02-17  0:22 ` paolo dot carlini at oracle dot com
  20 siblings, 0 replies; 22+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-17  0:22 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from paolo dot carlini at oracle dot com  2010-02-17 00:22 -------
*** Bug 43100 has been marked as a duplicate of this bug. ***


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Etrnls at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42983


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2010-02-17  0:22 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-06  7:58 [Bug c++/42983] New: [c++0x] Unvirtualzation of virtual destructor lavock at gmail dot com
2010-02-06 10:15 ` [Bug c++/42983] [c++0x] Unvirtualization " paolo dot carlini at oracle dot com
2010-02-06 12:05 ` lavock at gmail dot com
2010-02-06 20:15 ` [Bug c++/42983] [C++0x] Defaulted virtual destructor isn't virtual paolo dot carlini at oracle dot com
2010-02-07 11:44 ` paolo dot carlini at oracle dot com
2010-02-08 12:35 ` jwakely dot gcc at gmail dot com
2010-02-08 12:57 ` paolo dot carlini at oracle dot com
2010-02-08 13:49 ` lavock at gmail dot com
2010-02-08 13:56 ` jwakely dot gcc at gmail dot com
2010-02-08 13:58 ` albrt2000 at gmail dot com
2010-02-08 14:00 ` jwakely dot gcc at gmail dot com
2010-02-08 14:05 ` jwakely dot gcc at gmail dot com
2010-02-08 14:24 ` albrt2000 at gmail dot com
2010-02-08 14:25 ` albrt2000 at gmail dot com
2010-02-08 14:36 ` paolo dot carlini at oracle dot com
2010-02-08 14:49 ` albrt2000 at gmail dot com
2010-02-08 15:10 ` jwakely dot gcc at gmail dot com
2010-02-08 15:18 ` lavock at gmail dot com
2010-02-08 15:28 ` paolo dot carlini at oracle dot com
2010-02-10 21:49 ` jason at gcc dot gnu dot org
2010-02-10 22:00 ` jason at gcc dot gnu dot org
2010-02-17  0:22 ` paolo dot carlini at oracle dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).