$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alexander Grund (alexander.grund_at_[hidden])
Date: 2019-10-16 07:00:47
Am 15.10.19 um 22:45 schrieb Emil Dotchevski via Boost:
> 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.
The warning is "Virtual class has non-virtual destructor so deleting it 
through a base class will lead to bugs", which is correct, isn't it?
As mentioned: Neither the compiler nor a reviewer can confirm that a 
delete only ever happens through the most derived pointer because while 
error_info_container has a protected destructor (and hence cannot be 
deleted through a pointer to that class from outside), the 
error_info_container_impl has a public destructor and deletes itself 
through a this pointer. So if at any point in time someone derives from 
that class (which the missing final allows and there is no comment 
advising against that) you will have a bug.
Don't get me wrong: I agree that it is not a bug here and everything is 
working as intended *currently*. I'm just saying that the warning is 
valid, and the Clang/GCC(?) warning is even more helpful in suggesting 
to make this class error_info_container_impl which it should be 
according to the design.
While writing this: It seems MSVC already warns for the base class -.- 
Again this is a valid warning, but can be ignored for this specific 
class because the dtor is protected. I'm not a friend of globally 
disabling a warning (for the whole file) without an explanation. I'd 
expected it around error_info_container with a comment like `//Never 
deleted through base class pointer` as a note to future devs.