Почему 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>
, Его новый дом позволяет использовать его, не внося ненужных накладных расходов.