placement new helper ensures it has enough space for any of a list of types