[PATCH] D45163: [Sema] -Wunused-value: diagnose unused std::move() call results.

Roman Lebedev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 2 15:19:46 PDT 2018


lebedev.ri added a comment.

In https://reviews.llvm.org/D45163#1054925, @Quuxplusone wrote:

> > I think it wouldn't be unreasonable to ask standard library maintainers to add `[[nodiscard]]` to `std::move`
>
> +1. Also `std::forward`, for sure. Basically any metaprogramming function that is statically known to return a reference to its argument.
>  This knowledge is already in the brains of library vendors; they ought to just write it down in the form of `[[nodiscard]]` annotations. This PR smells like Clang is trying to "cut out the middleman" and just make up its own proprietary list of metaprogramming functions that are statically known to return references to arguments, which is not the most effective or futureproof way to go about it. Let the library vendors deal with it, please, says me.


A few updates:

- `std::move()` *should* be a part of the next paper about `[[nodiscard]]`. Yay!
- https://reviews.llvm.org/D45179 *should* make those attributes usable in pre-C++17 code. For people using libc++.

But, some points still remain:

- `std::move()` is not `[[nodiscard]]` yet
- https://reviews.llvm.org/D45179 is not merged yet
- Even when either/both things happen, it won't really help those not using libc++ [trunk] / C++17-or-later. That is a *lot* of people.

I do agree with @Quuxplusone, we wouldn't want to pull the list of all the `[[nodiscard]]` functions from the standard into clang just because. (we could do that with `clang-tidy`)
But maybe `std::move()` is a bit special in this regard... ?


Repository:
  rC Clang

https://reviews.llvm.org/D45163





More information about the cfe-commits mailing list