¿Por qué permitir `propagate_on_container_swap == false` en Allocators, cuando puede causar un comportamiento indefinido?

Nota: Originalmente preguntado porMatt Mcnabb como uncomentario en¿Por qué el intercambio de contenedores de biblioteca estándar puede ser problemático en C ++ 11 (que involucra asignadores)?.

El estandar (N3797) dice que siprogagate_on_container_swap dentro de unAsignador esstd::false_type rendirácomportamiento indefinido si los dos asignadores involucrados no se comparan igual.

¿Por qué la Norma permitiría tal construcción cuando parece más que peligroso?

23.2.1p9 Requisitos generales de contenedores [container.requirements.general]

Siallocator_traits<allocator_type>::propagate_on_container_swap::value&nbsp;estrue, entonces los asignadores dea&nbsp;yb&nbsp;también se intercambiará mediante una llamada no calificada a un no miembroswap. De lo contrario, no se intercambiarán, y el comportamiento es indefinido a menos quea.get_allocator() == b.get_allocator().