<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137696>137696</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Check request: modernize-use-move-instead-swap
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
denzor200
</td>
</tr>
</table>
<pre>
C++03 did not have move semantics (`std::move`), so `swap` was used to efficiently transfer resources:
```
class CookieManager {
std::vector<Cookie> m_cookies;
public:
CookieManager() = default;
void initialize();
};
void CookieManager::initialize() {
std::vector<Cookie> v(1'000'000);
for (int i=0;i<1'000'000;++i) {
v[i] = // TODO: generate one cookie
}
m_cookies.swap(v); // exchange m_cookies with v (resources are transferred to m_cookies)
}
```
Needs a check that will find usages of `swap` and will suggest to use move-semanthic instead:
```
void CookieManager::initialize() {
std::vector<Cookie> v(1'000'000);
for (int i=0;i<1'000'000;++i) {
v[i] = // TODO: generate one cookie
}
m_cookies = std::move(v); // move semanthic (no copy)
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VMuO6zYM_Rp6QySQpfFr4UUeza69m-4LWWJs9TpSKsmeznx9IdvzSHvbogVuICQCxEMe8pxQhmB6S9RCcYTinMkpDs63muyr85yxrHP6pQV2OAE_Aj8ygdpotC7iIGfCm5sJA92kjUYFBF5DyULUIA4gDukVSga8AX7C4DA9Pss7lAyfZcApkMbokK5XowzZOL5g9NKGK3n0FNzkFYWUiy2nZNthBzXKEPDk3FdDP0ore_II1RHYARHxncFMKjoP4rRGgvgBb7-o5R5ApPD71I1GrTUS9CFl6oc3COKMmq5yGuMKSoGzMxqNNdHI0bzSGro-Q3XeLuywhD0mXZj9GfnG_p-oz8DrHHjFGHv7bj4IXZ1PAhgb0YA4MxBHA-L0CBDHVUjzqeQMxdFAcV76BH4BfsGfv5y_gDhgT5a8jITOEq6D28qlJtfb-0T3i7i8nldeb7nodzVI29NHID6bOOCc6L7LjNLTu_p-NcaHVrzZ5vpoA2CHn4h0QIlqIPUV4yAjPptxxKuxGqcgewrorp-tJ61eQ8LU9xRiqjSF1cy71cyDUWhsiCT1N-33X1X9F09-J2G3z__Q9xviLujHv_ZflP60DtIEgdfWoXL3l7_TL9Ot0I1oZEZtXj0VdVlXVZMNbVV1LOdKVVrIQpPiXVeyImd5TlVRizozLWe8YE-8zhvBi2ZfXjtJVUGyIZmXQsATo5s0434c59ve-T4zIUzU5qIqmzIbZUdjWPYe52qUtt9Fo1-A87QHfZtQu27qAzyx0YQYPvJEE8dlY36CFWc8LQb09NtEIabZ3pwmb80r7aZAu8Vdm6d2yYrZ5Md2iPG-bLhlgL2Jw9TtlbsBv6R628_u7t2vpCLwy9JEAH7Z-phb_kcAAAD__2O4sx8">