On Tue, Oct 15, 2019 at 2:43 AM Alexander Grund via Boost < boost@lists.boost.org> wrote:
On 2019-10-15 12:06, Alexander Grund via Boost wrote:
Then it looks like the warning is indeed correct:
https://github.com/boostorg/throw_exception/blob/e2e802e5085e10db7d5ee5ded4c...
`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. The warning is actually correct as one *could* have a class derived from`error_info_container_impl` which would then be deleted through a
Am 15.10.19 um 11:14 schrieb Andrey Semashev via Boost: pointer to `error_info_container_impl` only.
The warning is not correct, and making the destructor virtual is wrong, because by design it is a bug to delete the base pointer type. I just disabled the warning for MSVC.