[cfe-dev] Coding style and warning spam: redundant std::move?

Whisperity via cfe-dev cfe-dev at lists.llvm.org
Sat Feb 15 12:13:27 PST 2020


You cannot really *fix* the issue until the minimum required GCC version
for the project is bumped because changing "std::move(Err)" to just "Err"
may (and most likely will) result in compile errors. The following case:

  struct Something {};
  <T> struct CreateFromMoveable {
    CreateFromMoveable(T&&);
  };

  CreateFromMoveable<Something> f() {
    Something S;
    // ...
    return S;
  }

is a hard failure with old GCC, that's why "std::move" is written there.
Once the "std::move" is there, old GCC properly picks up the fact that it
could bind the move ctor in the return.

For now, you could either fall back to using an older compiler or disable
the warning locally...


Nicolai Hähnle via cfe-dev <cfe-dev at lists.llvm.org> ezt írta (időpont:
2020. febr. 15., Szo, 20:35):

> Hi all,
>
> GCC 9 introduced a new warning, -Wredundant-move, which is enabled by
> default when building LLVM and produces what looks like at least
> thousands of hits.
>
> https://reviews.llvm.org/D74672 is a sample of the kind of changes
> pointed out by this warning, more explanations are in this blog post:
>
> https://developers.redhat.com/blog/2019/04/12/understanding-when-not-to-stdmove-in-c/
>
> What do people think should be done here?
>
> 1. Disable -Wredundant-move?
> 2. Fix it all (seems daunting to do manually)?
> 3. Encourage clang/clang-tidy developers to add this warning and add a
> clang-tidy rule to fix it automatically?
>
> My personal opinion is that while the review linked above should be
> committed, it's ultimately a drop in the ocean and #3 is the way to
> go.
>
> In the meantime, I'm certainly going to disable -Wredundant-move
> locally, but should that also be done by default for gcc in the
> CMakeLists.txt?
>
> Cheers,
> Nicolai
> --
> Lerne, wie die Welt wirklich ist,
> aber vergiss niemals, wie sie sein sollte.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200215/44c1b327/attachment.html>


More information about the cfe-dev mailing list