Use auto_id when constructing a SharedPointerSlot in order to avoid issues with forward-declared typeid