Write a smart pointer class. A smart pointer is a data type, usually implemented with templates, that simulates a pointer while also providing automatic garbage collection. It automatically counts the number of references to a SmartPointer object and frees the object of type T when the reference count hits zero.
O(1)
Run make to build and run Swift files. Or you can run .playground file.