Причина в том, что auto_ptr
освободит контент, используя delete
вместо delete[]
, и поэтому auto_ptr
не подходит для обработки массивов, выделенных в куче (созданных с new[]
), и подходит только дляобработка отдельных выделенных в куче массивов, созданных с помощью new
.
Поддержка operator[]
, побудит разработчиков использовать его для массивов и по ошибке создаст впечатление, что тип может поддерживать массивы, когда на самом делеэто невозможно.
Если вам нужен класс массива, подобный интеллектуальному указателю, используйте boost :: scoped_array .