[PATCH] D68912: Adds -Wrange-loop-analysis to -Wall
Denis Nikitin via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 17 12:09:13 PST 2020
denik added a comment.
We are hitting the warning in template code with bool and loop like this: "for (const auto& element : value)" where element is bool from template. But not always.
When it is bool the warning triggers:
error: loop variable 'element' is always a copy because the range of type 'const std::vector<bool, allocator<bool> >' does not return a reference [-Werror,-Wrange-loop-analysis]
However, the template type can also use non-bools and if I remove the reference I hit alternative case where the warning complains about copy operation of reference types:
error: loop variable 'element' of type 'const std::__1::basic_string<char>' creates a copy from type 'const std::__1::basic_string<char>' [-Werror,-Wrange-loop-analysis]
for (const auto element : value):
use reference type 'const std::__1::tuple<unsigned int, bool, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > &' to prevent copying
So there is no way to satisfy the warning other than disabling it.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68912/new/
https://reviews.llvm.org/D68912
More information about the cfe-commits
mailing list