When parameters change
Our size-based arena implementation is very specific: it supposes the possibility of sequential allocations and the ability to dismiss the (generally important) question of reusing memory after it has been freed.
An important caveat to any size-based implementation is, obviously, that we are counting on a specific size. Know, thus, that with this constraint, our current implementation is slightly dangerous. Indeed, consider the following evolution of our program, where we envision tougher, meaner Orc subclasses such as the following:
class MeanOrc : public Orc {
  float attackBonus; // oops!
  // ...
}; It might not be apparent at first, but we just might have broken something important with this new class, as the member function allocation operators are inherited by derived classes. This means that the Tribe class, also known under the somewhat noisier name of SizeBasedArena<Orc,Orc::NB_MAX>, would implement a strategy meant...