std::string
предоставляет метод max_size()
для определения максимального количества элементов, которые он может содержать.Почему не std :: string :: max_size константа времени компиляции?
Однако, чтобы выработать максимальную длину строки в целом, программист должен создать (возможно, пустой) строковый объект.
Если этому классу не нужна информация от программиста, почему нет max_size()
в качестве постоянной времени компиляции? Есть ли какая-то информация о времени выполнения, необходимая для того, чтобы строка выработала свой максимальный размер?
Youre логику необходимости создать пустую строку не выполняется (потому что основной Распределитель держит эту информацию). Также max_size() не является постоянным значением. Это самое большое значение, которое может быть выделено в настоящее время (время выполнения зависит от состояния распределителя). –
@ Loki: Можете ли вы предоставить ссылку для вашего заявления? Я спрашиваю, потому что я уверен, что вы ошибаетесь (для 'max_size' применительно к строкам, а распределители - другая история). – Nemo
@Nemo: В стандарте нет ничего, что говорит, что оно постоянно. Тем не менее, он может быть постоянным в некоторых реализациях.(** Я предполагаю здесь ** ->) Если бы стандартный комитет хотел, чтобы он был константой, он бы сделал его константной переменной типа 'std :: string :: npos', но чтобы предоставить больше возможностей для гибкости это метод. –