Из N3290, [container.requirements.general]:
Выражение
a.swap(b)
для контейнеров a и b стандартного типа контейнера, отличного отarray
, должно обменивать значения a и b, не вызывая никаких операций перемещения, копирования или свопинга для отдельных элементов контейнера.
Как это взаимодействует с оптимизацией небольших строк? Забыли ли они добавить std::string
?