It has to make at least one copy into the vector to prevent dangling references. Unless we want to require that the Socket object will exist for the lifetime of the set which involves more changes to cSocketThread.