$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [system] virtual ~error_category
From: Peter Dimov (lists_at_[hidden])
Date: 2018-02-12 20:01:33
Niall Douglas wrote:
> It's very valid for a custom error code category to allocate some sort of
> internal state e.g. a hash table for looking up messages. This could be
> allocated statically, but it might also be allocated by the category
> instance on the basis that it was until now the same thing. This would not
> be freed on destruction if the `error_category` destructor were not
> virtual.
That's not true in the cases I can think of. Could you illustrate with code?
> But as far as Boost.System goes, I think de-virtualising its destructor is
> a major API break.
It certainly is a potentially breaking change.
> I can see plenty of code out there in the wild relying on that destructor
> firing when it's supposed to, and Boost devirtualising it would equal a
> resource leak where there was none before.
Yes, it's better to make it protected, as Paul Groke observed. This way
there'll be no silent failures.