Issue 137696
Summary [clang-tidy] Check request: modernize-use-move-instead-swap
Labels clang-tidy
Assignees
Reporter denzor200
    
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)
}
```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to