Начиная с N3290, [container.requirements.general]:
Выражение a.swap(b) для контейнеров a и b стандартного типа контейнера, отличного от array, должно обмениваться значениямиa и b без вызова каких-либо операций перемещения, копирования или обмена для отдельных элементов контейнера.
a.swap(b)
array
Как это взаимодействует с оптимизацией небольших строк?Они забыли добавить std::string тоже?
std::string
(Повторная запись из комментария)
std::string не является контейнером - тот факт, что basic_string не описан в главе Containers library (§23) FDIS, является хорошей подсказкой.; -]
basic_string
Containers library