changed the std:unique_ptr to boost::shared_ptr
in gcc 4.5 the unique_ptr are not supported in maps because the pair constructor always try to copy its elements even if they are move only (like unique_ptr). see http://stackoverflow.com/questions/3906295/c-unique-ptr-and-map I have changed them to shared_ptr so the object will also be removed after map is deleted, but we loose the strictness unique_ptr gave us.