void ProductType::destroy_impl (void *p) { for (int i = 0; i<n; ++i) { auto vt = cp[i]; p = round_up(p,vt->object_alignment()); vt->destroy(p); INCR(p,vt->object_size()); } }
void ProductType::move_assign_impl(void *dst, void *src) { for (int i = 0; i<n; ++i) { auto vt = cp[i]; auto align = vt->object_alignment(); src = round_up(src,align); dst = round_up(dst,align); vt->move_assign(dst,src); auto z = vt->object_size(); INCR(src, z); INCR(dst, z); } }
size_t Metachunk::overhead() { return align_size_up(sizeof(Metachunk), object_alignment()) / BytesPerWord; }