Issue 115740
Summary [clang-tidy] Regression, false-positive on `std::forward` in capture groups.
Labels clang-tidy
Assignees
Reporter Jhuighuy
    Hi everyone,

Consider the following snippet of code:
```cpp
#include <ranges>
#include <utility>

template<std::ranges::random_access_range Range, 
	 std::ranges::random_access_range Perm>
  requires std::ranges::viewable_range<Range> &&
 std::ranges::viewable_range<Perm>
constexpr auto permuted_view(Range&& range, Perm&& perm) {
  return std::ranges::transform_view{
 std::forward<Perm>(perm),
      [range_view = std::views::all(std::forward<Range>(range))](
          size_t index) -> decltype(auto) { return range_view[index]; }};
}
```

When I ran the latest released `clang-tidy` (19.1.3) over it with a check `cppcoreguidelines-missing-std-forward`, it produces a false-positive warning:
```
$ clang-tidy --version 
Homebrew LLVM version 19.1.3
  Optimized build.
$ clang-tidy b.cpp "--checks=cppcoreguidelines-missing-std-forward" -- -std=c++23 
94 warnings generated.
.../b.cpp:8:38: warning: forwarding reference parameter 'range' is never forwarded inside the function body [cppcoreguidelines-missing-std-forward]
    8 | constexpr auto permuted_view(Range&& range, Perm&& perm) {
      | ^
Suppressed 93 warnings (93 in non-user code).
```

`clang-tidy` (18.1.8) works as expected.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to