<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">