Załóżmy, że masz następujący kod:
#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;
}
Wyobraź sobie, że wektor nie jest std::string
jeszcze klasą:
std::vector<Widget> WidgetVector;
std::vector<Widget2> Widget2Vector;
Czy nadal można bezpiecznie zamienić dwa wektory za pomocą std::vector::swap
metody: WidgetVector.swap(Widget2Vector);
czy doprowadzi to do UB?