smart_pointer modify