Почему std :: swap был перемещен в <utility>? - PullRequest
18 голосов
/ 22 мая 2011

Почему std::swap был перемещен в заголовок <utility> для C ++ 11?

N3290 C.2.7 говорит:

17.6.3.2

Влияние на исходную функцию: своп функции перемещен в другой заголовок

Обоснование: Удалите зависимость для <algorithm> для свопинга.

Эффект на исходную функцию: допустимый код C ++ 2003, который был скомпилирован, ожидая, что своп находится в <algorithm>, может вместо этого включать <utility>.

Я не могу понять часть, выделенную жирным шрифтом.О какой зависимости говорят и почему?

1 Ответ

33 голосов
/ 22 мая 2011

Комитет хотел разрешить вам использовать swap() без введения зависимости времени компиляции от большого и более сложного заголовочного файла <algorithm>. Поскольку swap() очень широко используется, имеет смысл разрешить вам использовать его определение с как можно меньшим количеством дополнительного багажа; это обычно приводит к более быстрому времени компиляции для файлов, которым иначе не требуется <algorithm>. Его новый дом позволяет использовать его без лишних затрат.

...