Supponi di avere il seguente codice:
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> First{"example", "second" , "C++" , "Hello world" };
std::vector<std::string> Second{"Hello"};
First.swap(Second);
for(auto a : Second) std::cout << a << "\n";
return 0;
}
Immagina che il vettore non lo sia std::string
, eppure le classi:
std::vector<Widget> WidgetVector;
std::vector<Widget2> Widget2Vector;
È ancora sicuro scambiare i due vettori con il std::vector::swap
metodo: WidgetVector.swap(Widget2Vector);
o porterà a un UB?