Комментарии в файле basic_string.h из GCC 4.3.4:
// The maximum number of individual char_type elements of an
// individual string is determined by _S_max_size. This is the
// value that will be returned by max_size(). (Whereas npos
// is the maximum number of bytes the allocator can allocate.)
// If one was to divvy up the theoretical largest size string,
// with a terminating character and m _CharT elements, it'd
// look like this:
// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
// Solving for m:
// m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
// In addition, this implementation quarters this amount.
В частности, обратите внимание на последнюю строку, «Кроме того, эта реализация делит эту сумму на четверти». Я понимаю, что это означает, что деление на четыре на самом деле совершенно произвольно .
Я попытался найти дополнительную информацию в журнале регистрации для basic_string.h , но он восходит только к 5 октября 2000 года, и этот комментарий уже присутствовал, как показано в этой ревизии, и я ' Я недостаточно знаком с этой кодовой базой, чтобы знать, где файл мог находиться в дереве исходных текстов до того, как был перемещен в его текущее местоположение.