You can clone with
HTTPS or Subversion.
Memory allocations ("new") and some stl operations are designed to "throw". The code has no handling of "throw" operations.
More broadly, we'll just have to think about how we want or don't want to handle exceptions in there-- there is also a form of new that explicitly does not throw exceptions, operator new(std::nothrow):
char *x = new(std::nothrow) char;