Warum wird "unique_ptr <QByteArray>" nicht zu "QByteArray *" degradiert?

Ich habe den folgenden Code:

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

  return QDataStream{msg_buf_ptr, QIODevice::WriteOnly};

Ich erhalte den folgenden Fehler:

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

Aber wieso? Ich dachteunique_ptr undshared_ptr wird automatisch zu rohen Zeigern degradiert, wenn sie als Argumente an Funktionen übergeben werden, die Zeiger verwenden. Wenn nein, warum nicht? Wenn dies (normalerweise) der Fall ist, warum schlägt dies bei @ fehQByteArray?

Ich könnte explizit @ anrufmsg_buf_ptr.get(), aber das scheint unnötig zu sein.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage