$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: John Nagle (nagle_at_[hidden])
Date: 2004-05-27 01:42:45
   I think the relationship between "size()" and "capacity()"
has to be such that if "size() < capacity()" you can add a
character.  So "capacity()" should not include the trailing
null.  
   For consistency with "<string>", "size()" can't include
the trailing null.
   The big question is whether the size specified in the
declaration (as in "char_string<80>") includes the
trailing null.  
   I don't want to express an opinion on this until
I've had some sleep.  I can think of good arguments
for both sides.  
                                John Nagle
Reece Dunn wrote:
> John Nagle wrote:
> 
>>   Since space for a trailing null is required, the
>> minimum "capacity" is currently 1.
>>
>>   The maximum value for "size()" is then "capacity()-1".
>> That seems a little wierd.  Should the trailing null be
>> counted in "capacity?"
> 
> 
> This is a good point. At the moment fixed_string< n >::capacity() == n. 
> It would therefore make sense that this be changed so that either:
> 
> [1] fixed_string< n >::capacity() == n - 1 -- this would seem 
> counter-intuitive, as fixed_string< 1 > would not be able to store any 
> characters!
> 
> [2] change CharT str[ n ] to CharT str[ n + 1 ] -- i.e. add an extra 
> character for the trailing null. This would make more sense, as it is 
> similar to:
>   char * str = new char[ s.length() + 1 ];
> 
> I personally but a vote for solution 2, but what do other people think?
> 
> Regards,
> Reece