Вот пишу я, допустим, так:
std::auto_ptr<byte> pBuf(new byte[dataSize]);
Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get();
А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[]
Насколько я помню, для примитивных типов никакой катастрофы не будет... но тем не менее, это нужно считать "грязным кодом"?