¿Por qué `unique_ptr <QByteArray>` no se degrada a `QByteArray *`?

Tengo el siguiente código:

  msg_buf_ptr = std::make_unique<QByteArray>();

  return QDataStream{msg_buf_ptr, QIODevice::WriteOnly};

Estoy teniendo el siguiente error:

no known conversion for argument 1 from ‘std::unique_ptr<QByteArray>’ to ‘QByteArray*’

¿Pero por qué? penséunique_ptr yshared_ptr se degradan automáticamente a punteros sin formato cuando se pasan como argumentos a funciones que toman punteros. ¿Si no, porque no? Si (generalmente) lo hacen, ¿por qué falla esto en el caso deQByteArray?

Podría llamar explícitamentemsg_buf_ptr.get(), pero parece que debería ser innecesario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta