¿Es mejor usar shared_ptr.reset o operator =?

Estoy tratando de envolver mi cabeza en torno a los nuevos modismos para C ++ 11.

Parece que con shared_ptr al menos, hay una diferencia sustancial entre usarnew T() ymake_shared<T>().

Pero, ¿qué hay de restablecer un puntero compartido para apuntar a una nueva instancia de algo? Anteriormente, normalmente usaríareset(new T()) miembro. Sin embargo, ¿esto no tiene el mismo problema que no usar make_shared () en primer lugar? (es decir, no permite que make_shared asigne el objeto, por lo tanto, ¿está obligado a colocar el recuento de referencia en una asignación separada en lugar de en la misma asignación que la propia T?)

Es simplemente mejor seguir adelante para usar:

   mysharedptr = make_shared<T>(args...);

¿O hay un mejor camino?

¿Y no debería restablecer el reenvío variadic de la oferta como lo hace make_shared, para que uno pueda escribir mysharedptr.reset (args ...) ;?

Respuestas a la pregunta(2)

Su respuesta a la pregunta