Почему С++ не позволяет создавать экземпляры неполных типов?
Конечно, можно писать контейнеры, которые не имеют этого ограничения - boost:: container вполне способен это сделать. Насколько я вижу, он, похоже, не дает какого-либо повышения производительности или другого типа, но стандарт объявляет его undefined.
Это предотвращает, например, создание рекурсивных структур данных.
Почему же тогда стандарт С++ налагает это произвольное ограничение? Что было бы недостатком в том, чтобы разрешать неполные типы в качестве параметров шаблона, где это возможно?