Por que o `unique_ptr <QByteArray>` não é degradado para o `QByteArray *`?

Eu tenho o seguinte código:

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

  return QDataStream{msg_buf_ptr, QIODevice::WriteOnly};

Eu estou recebendo o seguinte erro:

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

Mas por que? eu penseiunique_ptr eshared_ptr degradam automaticamente para ponteiros brutos quando passados como argumentos para funções que recebem ponteiros. Se não, por que não? Se eles (geralmente) o fazem, por que isso falha no caso deQByteArray?

Eu poderia ligar explicitamentemsg_buf_ptr.get(), mas isso parece ser desnecessário.

questionAnswers(1)

yourAnswerToTheQuestion