std::string
предоставляет метод max_size()
для определения максимального количества элементов, которые он может содержать.
Однако, чтобы вычислить максимальную длину строки в целом, программист должен создать строковый объект (возможно, пустой).
Если этому классу не нужна никакая информация от программиста, почему max_size()
недоступна как константа времени компиляции? Есть ли какая-то информация о времени выполнения, необходимая для определения максимального размера строки?
max_size
применительно к строкам; распределители — это отдельная история). - person Nemo   schedule 31.10.2012std::string::npos
, но чтобы обеспечить больше возможностей для гибкости, это метод. - person Martin York   schedule 31.10.2012std::vector
непрерывной. А как насчет спецификаций исключений? Они не боги, они совершают ошибки. Стандарт C++03 говорит только (23.1)size()
о максимально возможном контейнере и о том, что он должен иметь O(1). Это довольно расплывчато, IYAM, и оставляет много места для предположений относительно того, для чего это было предназначено. - person sbi   schedule 02.11.2012