Using std::unique_ptr to replace std::auto_ptr for the sake of C++ 11
Except for some third party libraries: msgpack/yaml