smart pointer
test smart pointer