continuing on template smart ptr fun