Why is juce::Value final?

The current Value definition says:
class JUCE_API Value final

Is there a good reason for that? Well, I am sure there is because usually you don’t do things “just like that”, but I don’t see it (the reason). It broke my code after I pulled the latest version.

I understand that I don’t need to subclass it and in all the cases I can probably come up with some other solution, but that alone is not a reason…


Value doesn’t even have a virtual destructor, so how would it be a good idea to inherit from it?

I am not saying it’s a good idea, but it would not be a bad idea either (if it had a virtual destructor which it could have…). I just used it to remember some additional information so that they are easily accessible from the listener (who probably dynamic_casts it to the child and if it was of that one special type it did some additional things with the static data).

But yeah, since there’s no virtual destructor, this is not something you should do even if your data is not dynamic…