Erstellungsleistung von C ++ weak_ptr

Ich habe gelesen, dass das Erstellen oder Kopieren eines std :: shared_ptr einen gewissen Overhead mit sich bringt (atomares Inkrementieren des Referenzzählers usw.).

Aber wie sieht es stattdessen mit der Erstellung eines std :: weak_ptr aus:

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);

Ich hatte auf eine schnellere Leistung gehofft, aber ich weiß, dass der gemeinsame Zeiger immer noch den Zähler für schwache Verweise erhöhen muss. Ist dies also immer noch so langsam wie das Kopieren eines gemeinsamen_Zeichens in einen anderen?