move shared_ptr into vector, don't construct