I have just started using Poco and I'm suitably impressed by its depth and usefulness. There are, however, some issues that I'd like to raise and find out why things have been implemented in certain ways.
A lot of classes have protected destructors. This means that you cannot create them on the stack without having to create a "blank" subclass. It also means that you can't use std::auto_ptr or a shared_ptr with them. Looking at some of the sample applications it seems like these classes are often created on the heap using new and are never deleted. Since they aren't deleted then the lack of an accessible destructor doesn't cause a compilation problem. It does, however, cause a memory leak. This may not be an issue for a lot of people since these objects typically live for the lifetime of the application. However, it does seem unnecessarily limiting to prevent stack allocation in this way. Running some of the sample applications under valgrind shows a number of potential leaks and I'd like to eliminate these, just as I strive to eliminate compiler warnings.
Any clues as to why so many destructors are protected and if it would be possible in a future version to remove this restriction?