The auto_array<> class in Utility.h seems to have a bug. It should
release an array of objects instead of an object.
diff Utility.h Utility.h.new
< delete array;
> delete array;
It doesn't have concept of ownership transfer that std::auto_ptr<>
has. I guess that's because there's no requirement of it yet.