shared_ptr does not call destructor