la mejor práctica al devolver punteros inteligentes

¿Cuál es la mejor práctica al devolver un puntero inteligente, por ejemplo, un boost :: shared_ptr? ¿Debería, por norma, devolver el puntero inteligente o el puntero sin formato subyacente? Vengo de C #, así que tiendo a devolver siempre punteros inteligentes, porque se siente bien. De esta manera (omitiendo const-correctness para código más corto):

class X
{
public:
    boost::shared_ptr<Y> getInternal() {return m_internal;}

private:
    boost::shared_ptr<Y> m_internal;
}

Sin embargo, he visto a algunos codificadores experimentados que devuelven el puntero sin formato y colocan los punteros sin formato en vectores. ¿Cuál es la forma correcta de hacerlo?

Respuestas a la pregunta(18)

Su respuesta a la pregunta