Почему std::swap был перемещен в <утилиту>?

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

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

17.6.3.2

Эффект оригинальной функции: функция swap перенесена в другой заголовок

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам