Thanks.
In this case the max_size would be Size-1 ; because I'm using the state where the tail is one step behind head to denote the empty convention. The other conventions I read about are much much convoluted.
I remember reading somewhere that x.empty() should by preferred to x.size()==0 . I don't remember the reason, but if it is legitimate; is that point valid here? .. as implementing empty using size seems to negate that ..