Подтвердить что ты не робот

Почему std:: swap переместился в <utility>?

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

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

17.6.3.2

Эффект на оригинальную функцию: обмен функцией перемещен в другой заголовок

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

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

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

4b9b3361

Ответ 1

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