Из N3290, [container.requirements.general]:
Выражение a.swap(b) для контейнеров a и b стандартного типа контейнера, отличного от массива, должно обмениваться значениями a и b без вызова каких-либо операций перемещения, копирования или замены отдельных элементов контейнера.
Как это взаимодействует с оптимизацией небольших строк? Они тоже забыли добавить std::string?
Подробнее здесь: https://stackoverflow.com/questions/639 ... n-and-swap