Собственно, вопрос.
Понятно, что можно втулить делетер массива в QSharedPointer:
template <typename T>
static void arrayDeleter(T* array)
{
delete[] array;
}
...
QSharedPointer<Foo> p(new Foo[10], &arrayDeleter<Foo>);
// или правильнее, но длиннее:
QSharedPointer<Foo> p(new QSharedPointer<Foo>::element_type[10], &arrayDeleter<QSharedPointer<Foo>::element_type>);
или сделать собственный класс.
ИМХО, QSharedArrayPointer должен быть в базовом функционале, по аналогии с QScopedArrayPointer.