Chris Lattner wrote:

I'm not sure I understand your point here. The library developer writes a class, and does not *want* it to be destroyed through the base class. As a library designer, I can intentionally make the dtor protected, making it pretty clear that delete should not be called on the base class.

I could agree that there should be no warning if the class declares a private operator delete. But, that kind of thing is a refinement.


The point is that it's a common error to forget the virtual destructor. If you're writing a library, and you put such a class in a header, you often want a warning *right then* -- not when a customer somewhere tries to use your library and uses delete on some class in your library.

With the current implementation of the warning, as a library designer, I am force to make the dtor virtual, even if there is no need in my library for it to be so.

Yes -- what if a user of your library will need it to be virtual?

Furthermore, even fine-grained warning control (at least on a per t-u basis) doesn't help me with this. As a library developer, forcing all

That's not fine-grained. Fine-grained is a pragma/attribute you can put on the class to say "don't issue this warning about this class."


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304

Reply via email to