Annex C (informative) Compatibility [diff]

C.2 C++ and ISO C++ 2003 [diff.cpp03]

C.2.13 Clause [containers]: containers library [diff.cpp03.containers]

[container.requirements]
Изменение: сложность size() функций-членов теперь постоянна.
Обоснование: Отсутствие спецификации сложности size() привело к различным реализациям с несовместимыми характеристиками производительности.
Влияние на исходную функцию: некоторые реализации контейнеров, соответствующие C ++ 2003, могут не соответствовать указанным size() требованиям в этом международном стандарте. Регулировка контейнеров, например, в std​::​list соответствии с более строгими требованиями, может потребовать несовместимых изменений.

[container.requirements]
Изменение: Изменение требований: расслабление.
Обоснование: Разъяснение.
Влияние на исходную функцию: допустимый код C ++ 2003, который пытается удовлетворить указанные требования к контейнеру, теперь может быть переопределен. Код, который пытался переносить между контейнерами, возможно, потребуется изменить следующим образом:

[container.requirements]
Изменение: Изменение требований: конструктивно по умолчанию.
Обоснование: Уточнение требований к контейнерам.
Влияние на исходную функцию: действительный код C ++ 2003, который пытается явно создать экземпляр контейнера с использованием определяемого пользователем типа без конструктора по умолчанию, может не компилироваться.

[sequence.reqmts], Изменение: Изменения подписи: из возвращаемых типов. Обоснование: старая подпись отбрасывала полезную информацию, пересчет которой может быть дорогостоящим. Влияние на исходную функцию: были изменены следующие функции-члены: [associative.reqmts]
void

Допустимый код C ++ 2003, который полагается на возвращение этих функций void (например, код, который создает указатель на функцию-член, указывающую на одну из этих функций), не сможет скомпилировать с этим международным стандартом.

[sequence.reqmts], Изменение: подпись меняется: с на параметры. Обоснование: превышение спецификации. Влияние на исходную функцию: подписи следующих функций-членов изменились с принятия на принятие : [associative.reqmts]
iterator const_­iterator

iterator const_­iterator

Допустимый код C ++ 2003, использующий эти функции, может не соответствовать этому международному стандарту.

[sequence.reqmts], Изменение: Подпись изменения: . Обоснование: производительность, совместимость с семантикой перемещения. Влияние на исходный объект: для , и переданное значение заливки теперь передается по ссылке, а не по значению, и была добавлена ​​дополнительная перегрузка . Допустимый код C ++ 2003, использующий эту функцию, может не соответствовать этому международному стандарту. [associative.reqmts]
resize

vector deque list resize resize