In release builds it is basically just an index in the underlying vector (plus one). In debug
builds every pool additionally mixes a random pool-specific offset into each ObjId it
issues, so an ObjId created by one pool is (with overwhelming probability) rejected when
used with another pool instead of silently aliasing an unrelated object.
Creates an ObjId from a raw index, without any pool-specific masking.
Note: in debug builds every pool mixes a random pool-specific offset into the ids it
issues, so to create an id valid for a particular pool use
ObjPool::index_to_obj_id instead.
Converts the ObjId into a raw index, without any pool-specific unmasking.
Note: in debug builds every pool mixes a random pool-specific offset into the ids it
issues, so to get the slot index of an id use ObjPool::obj_id_to_index instead.