Great g++ bug! Local destructor isn't called!
Tony Wetmore
tony.wetmore@solipsys.com
Wed Mar 10 15:57:00 GMT 2004
Interestingly, ~Object() is also called if you ADD a "throw(int)"
specifier to the FromBase::Run() method that invokes the Raiser
constructor. Tested on Linux with GCC 3.3.1.
---
Tony Wetmore
Raytheon Solipsys
mailto:tony.wetmore@solipsys.com
http://www.solipsys.com
-----Original Message-----
From: gcc-help-owner@gcc.gnu.org [mailto:gcc-help-owner@gcc.gnu.org] On
Behalf Of Eljay Love-Jensen
Sent: Wednesday, March 10, 2004 9:46 AM
To: Assinovsky, Lev; gcc-help@gcc.gnu.org
Subject: Re: Great g++ bug! Local destructor isn't called!
Hi Lev,
I notice that if the throw(int) specification is taken off the Raiser
constructor, then the ~Object() is called with -O3.
(I'm using GCC 3.3.1 on CygWin / Windows XP.)
Very odd. Good catch. Have you filed a bug?
BTW, in general, I've found that it's usually best NOT to put in throw
specifications for functions / methods. Ever. (This restriction does
not
apply to putting in the "throw() -- I throw nothing, ever"
specification. But even that should be used with great caution.)
If C++ did exception specifications like how Java does them, then that'd
be
a different story.
--Eljay
More information about the Gcc-help
mailing list