Static analyser cppcheck can produce these style messages for gcc trunk source code: $ fgrep useStlAlgorithm cppcheck.20220809.out trunk.git/gcc/analyzer/call-string.cc:169:9: style: Consider using std::count_if algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/analyzer/constraint-manager.cc:2454:0: style: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/analyzer/region-model-manager.cc:1230:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/analyzer/region.cc:1245:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/cp/constexpr.cc:348:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/cp/constexpr.cc:5965:8: style: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/cp/constexpr.cc:8991:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/rtl-ssa/change-utils.h:28:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/rtl-ssa/blocks.cc:347:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/rtl-ssa/accesses.cc:1507:7: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/gcc/rtl-ssa/member-fns.inl:854:0: style: Consider using std::any_of algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/libsanitizer/hwasan/hwasan_thread_list.h:120:20: style: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm] trunk.git/libsanitizer/hwasan/hwasan_report.cpp:293:0: style: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm] $ None, some or all of these might be worth fixing. I suspect it would not be worthwhile to implement this style warning in gcc.
I find those less obvious, for example does std::any_of guarantee some evaluation order?
(In reply to Richard Biener from comment #1) > I find those less obvious, for example does std::any_of guarantee some > evaluation order? I also find any_of less obvious, but that's because my working knowledge of C++ stopped about 20 years ago. According to https://cplusplus.com/reference/algorithm/any_of/ there is no guarantee of evaluation order. My best guess is that if gcc trunk is written in some recent version of C++, then all that recent version can be used.
> My best guess is that if gcc trunk is written in some recent version of C++, > then all that recent version can be used. We are written in C++11, is std::find_if available in the given standard?
(In reply to Martin Liška from comment #3) > > My best guess is that if gcc trunk is written in some recent version of C++, > > then all that recent version can be used. > > We are written in C++11, is std::find_if available in the given standard? Yes, there is *a* version of std::find_if available. Some additional work might be needed to verify exact match.
(In reply to David Binderman from comment #0) > Static analyser cppcheck can produce these style messages for gcc trunk > source code: > > $ fgrep useStlAlgorithm cppcheck.20220809.out > trunk.git/gcc/analyzer/call-string.cc:169:9: style: Consider using > std::count_if algorithm instead of a raw loop. [useStlAlgorithm] I don't think count_if would work here. I haven't looked at the others yet, but this first one seems like a useless suggestion.
(In reply to David Binderman from comment #2) > According to > > https://cplusplus.com/reference/algorithm/any_of/ cplusplus.com is garbage, use cppreference.com
std::find_if exists since c++98. I'll go through these in a couple of weeks, it's probably not productive for people who don't know the C++ std::lib well to bother analysing the suggestions.
(In reply to Jonathan Wakely from comment #5) > (In reply to David Binderman from comment #0) > > Static analyser cppcheck can produce these style messages for gcc trunk > > source code: > > > > $ fgrep useStlAlgorithm cppcheck.20220809.out > > trunk.git/gcc/analyzer/call-string.cc:169:9: style: Consider using > > std::count_if algorithm instead of a raw loop. [useStlAlgorithm] > > I don't think count_if would work here. I haven't looked at the others yet, > but this first one seems like a useless suggestion. The other suggestions for gcc/analyzer/*.cc look correct, or at least, not incorrect, but not all of them would improve clarity. Similarly for the gcc/cp/constexpr.cc suggestions. They would need a lambda expression that captures local variables, and then compare the result of the algorithm to the end iterator of the range. I don't think that would improve the code. It would certainly be more lines of code.