"This means hat if he whole class goes out of scope (the program exits) all the pointers are freed."
What you mean is "when the INSTANCE of a class" goes out of scope. Indeed, in the case of the framegame this is the case when the application exits. But for all my code this is exactly what I want, because I really want the GUI resources to be available at all time! I'm not going to reload a gui-button-surface from a file when I'm re-entering the game-menu....
Thus, your argument is not a matter of the scoped_ptr itself, but a matter of the scoped_ptr usage. Thus, an explicit design decision of me.
As for your second point.
"STL is definately NOT meant to be used for storing POINTERS"
This is nonsense. The STL is not meant to do anything in particular. Part of the STL is a collection of containers in which you can put anything you want. You can put instances (Build-in-type, POD's or more complex class structures) in it, but pointers too. It doesn't matter for the STL.
True, the STL is build on value-semantics (for very good reasons) and this seems to imply that the STL is meant to contain objects, and not pointers or references to objects, but this is not true. Any decent reallife situation will come up with a situation where you need pointers to objects in a container.
Start writing your GUI system, and you'll see what I mean.
If, instead, you would have said:
"The STL is not designed to safely contain raw pointers"
you would have been perfectly right! However, this only agrees my point.
Cheers,
Jape
[edited to fix spelling errors]