<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/146805>146805</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] Check request: performance-incorrect-move-with-smart-pointer-cast
        </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>
    Need a check that will find  incorrect usage of `std::move` with smart pointer casts (e.g., `std::static_pointer_cast`, `std::dynamic_pointer_cast`, their `boost` analogues, etc).

BEFORE:
```
std::shared_ptr<B> b = std::move(std::dynamic_pointer_cast<B>(a));
```

AFTER:
```
std::shared_ptr<B> b = std::dynamic_pointer_cast<B>(std::move(a));
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykkk2PnDwQhH9Nc7FAxubzwIH54Pi-0ir3kTENODF4YptZTX59ZHaUzY6SvUSyhISr3NWlRzinphWxgfwA-SkSm5-NbQZcfxjLKI16M9yb_xAHIoicUX4jfhaevCqtyajWgRC1SmMtSk82JyYkZiRQUOcH4C3wdjE3hIKSV-Vn4hZhPbkatXq0RArnHQFWYTIlwI4ffM4Lr-Tlob0ELRT0WTXcV7H8WeZnVDaIe2P2n0SsQptpQxeu0UtgdQK0Bdoezt3_L-fwJG2D_e3Q9j3NLCwOl6u3wI8H4GfSE-An8nFNVn0e7M0KrBLA6nD44Wkg0Lbtvpxf_iXK56OfE_81SjQ0fKh5LSJs0jJPc8opraO5QclGUY4pFbzqq77MyrrI-6HspczGVNJINYyynJbBwIusTniaY5r3KeOY5VXBIaO4CKUTrW9LYuwUKec2bNKsqGgeadGjdjuSjEkt1in2argDYwFR2wRX3G-Tg4xq5bx7f8crr3eYf7PlJ3LcybX4fcPQRUuuaEdjF7FKjH8BHIdK4gBqvIMaPxqMQ4PRZnUze391oT7WAesm5eetT6RZgHUhwuMTX635itID6_a9HLDusdqtYT8DAAD__-pjDgo">