Rendimiento de creación de C ++ weak_ptr

He leído que crear o copiar un std :: shared_ptr implica cierta sobrecarga (incremento atómico del contador de referencia, etc.).

Pero ¿qué hay de crear un std :: weak_ptr a partir de él?

Obj * obj = new Obj();
// fast
Obj * o = obj;
// slow
std::shared_ptr<Obj> a(o);
// slow
std::shared_ptr<Obj> b(a);
// slow ?
std::weak_ptr<Obj> c(b);

Esperaba un rendimiento más rápido, pero sé que el puntero compartido todavía tiene que incrementar el contador de referencias débiles ... ¿Entonces esto sigue siendo tan lento como copiar un shared_ptr en otro?

Respuestas a la pregunta(2)

Su respuesta a la pregunta