Types
CppUniquePtr[T] {.importcpp: "std::unique_ptr", header: "<memory>", bycopy.} = object
Procs
proc `$`[T](p: CppUniquePtr[T]): string
proc `=copy`[T](dst: var CppUniquePtr[T]; src: CppUniquePtr[T]) {. error: "A unique ptr cannot be copied", header: "<memory>", ...raises: [], tags: [], forbids: [].}
proc `=sink`[T](dst: var CppUniquePtr[T]; src: CppUniquePtr[T]) {. importcpp: "# = std::move(#)", header: "<memory>", ...raises: [], tags: [], forbids: [].}
func deref[T](p: CppUniquePtr[T] or CppSharedPtr[T]): var T {.noInit, importcpp: "(* #)", header: "<memory>", ...raises: [], tags: [], forbids: [].}
func get[T](p: CppUniquePtr[T] or CppSharedPtr[T]): ptr T {.noInit, importcpp: "(#.get())", header: "<memory>", ...raises: [], tags: [], forbids: [].}
func makeUnique(T: typedesc): CppUniquePtr[T] {. importcpp: "std::make_unique<\'*0>()", header: "<memory>", ...raises: [], tags: [], forbids: [].}
Macros
macro `.`[T](p: CppUniquePtr[T] or CppSharedPtr[T]; fieldOrFunc: untyped): untyped
macro `.()`[T](p: CppUniquePtr[T] or CppSharedPtr[T]; fieldOrFunc: untyped; args: varargs[untyped]): untyped
macro `.=`[T](p: CppUniquePtr[T] or CppSharedPtr[T]; fieldOrFunc: untyped; args: untyped): untyped