add scoped_ptr and shared_ptr