A smart pointer library