Probably just providing (weak) exception safety without throwing exceptions would be best, IMO.
It's usually someone who blames the STL because they chose the wrong datastructure or algorithm at one point. Also the std associative (set, map, ordered and unordered) containers tend to be slow, and require mallocs on every insertion, which is very unfortunate.
Still, these people will almost always be more happy with their own implementations anyway, so I'm not sure those people are worth catering to.
Regardless, I'm not sure how much of your code I'd be able to reuse if I took over your implementation. Well thats not really true, to be honest I have a fairly hard time understanding (huge single file, lots of nested classes many with same name) and am very uncomfortable when I make changes to it. But there's a lot I would change (you use heap the much more than I would, you use a map where I would use a vector, I rarely, if ever, use nested classes, etc).
I've made some changes to make it work better with the most recent version of SCML files (nothing major, just fall back to the pivot_x and pivot_y values in a file when missing in an object), but after struggling with the code for a while (unable to get x-flipping to work, unable to understand what your code does to handle it (should rotate_point() be doing something about the flip parameter?)) I've more or less given up and started working on a separate implementation, which I'll try to release in the near future.