2011-05-22 17 views
18

¿Por qué se ha movido std::swap al encabezado <utility> para C++ 11?¿Por qué se cambió std :: swap a <utility>?

N3290 C.2.7 dice:

17.6.3.2

Efecto sobre la función original: El intercambio de funciones se trasladó a una cabecera diferente

Justificación: Retire la dependencia de <algorithm> de intercambio.

Efecto sobre la función original: Válido código C++ 2003 que se ha compilado esperando intercambio de estar en <algorithm> puede tener lugar a incluir <utility>.

No entiendo la parte en negrita. ¿De qué tipo de dependencia se habla y por qué?

+0

Ese no es realmente el número de sección, el párrafo que ha citado se encuentra en la sección C.2.7. –

+0

@Ben: Editado eso :) –

Respuesta

33

El comité quería permitirle usar swap() sin introducir una dependencia en tiempo de compilación en el archivo de encabezado <algorithm> grande y más complejo. Debido a que el swap() es tan ampliamente utilizado, tiene sentido permitirle incluir su definición con el menor equipaje adicional posible; esto generalmente conducirá a tiempos de compilación más rápidos para archivos que de otra manera no necesitan <algorithm>. Su nuevo hogar le permite ser utilizado sin introducir gastos indirectos innecesarios.

+0

Gracias por la explicación precisa. :) –

Cuestiones relacionadas