wäre da ein &p nicht besser?
'for (auto& p : s_Pool)' arbeitet mit dem object selbst und erspart in jedem Fall eine Kopie des members von s_Pool.
Ich denke das wäre hier angebrachter, aber dann könnte man eben im loop auch p selbst ändern.
Mich wundert auch die Zeile 467
auto recv = p.lock();
p ist vom Typ std::weak_ptr, dessen Beschreibung sagt
std::weak_ptr
is a smart pointer that holds a non-owning ("weak") reference to an object that is managed by std::shared_ptr. It must be converted to std::shared_ptr in order to access the referenced object.
std::weak_ptr
models temporary ownership: when an object needs to be accessed only if it exists, and it may be deleted at any time by someone else, std::weak_ptr
is used to track the object, and it is converted to std::shared_ptr to assume temporary ownership. If the original std::shared_ptr is destroyed at this time, the object's lifetime is extended until the temporary std::shared_ptr is destroyed as well.
Die Zeile macht wohl eine implizite Konversation zu einem std::shared_pointer innerhalb des loops.