From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2019-10-15 09:14:58
On 2019-10-15 12:06, Alexander Grund via Boost wrote:
> Am 15.10.19 um 10:48 schrieb Andrey Semashev via Boost:
>> On 2019-10-15 10:06, Alexander Grund via Boost wrote:
>>> Where does 'exception.hpp' come from? I'd expect it at
>>> but it isn't there...
>> It's in https://github.com/boostorg/throw_exception.
> Then it looks like the warning is indeed correct:
> `error_info_container` has a non-virtual dtor although it does have
> other virtual methods and the derived class has a `delete this` but is
> not final. Hence the compiler can't be sure that there isn't another
> derived class.
> Any reason to NOT make the dtor virtual? Performance degrade can be
> resolved by making the derived class final (where supported which should
> be almost everywhere nowadays)
The warning is bogus because the object is never destroyed through the
base class. Marking the destructor virtual would suggest that that is
possible. And add a virtual call where none is needed.
Marking error_info_container_impl final should help, but we currently
don't have a macro for that. I created a PR to add one:
After it is merged, Boost.Exception can be updated to take advantage of it.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk