¿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.