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

Mehdi AMINI via cfe-dev cfe-dev at lists.llvm.org
Sat Feb 15 12:41:34 PST 2020


On Sat, Feb 15, 2020 at 12:13 PM Whisperity via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

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

Seems like this was fixed in gcc5?

https://godbolt.org/z/zaDyt6

-- 
Mehdi



>
> 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
>>
> _______________________________________________
> 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/5dd7784c/attachment-0001.html>


More information about the cfe-dev mailing list