During the review of D73007 Aaron Puchert mentioned warn_for_range_variable_always_copy shouldn't be part of -Wall since some coding styles require for(const auto &bar : bars). This warning would cause false positives for these users. Based on Aaron's proposal refactored the warnings:
- -Wrange-loop-construct warns about possibly unintended constructor calls. This is part of -Wall. It contains
- warn_for_range_copy: loop variable A of type B creates a copy from type C
- warn_for_range_const_reference_copy: loop variable A is initialized with a value of a different type resulting in a copy
- -Wrange-loop-bind-reference warns about misleading use of reference types. This is not part of -Wall. It contains
- warn_for_range_variable_always_copy: loop variable A is always a copy because the range of type B does not return a reference
Note the patch is intended to be backported to clang 11, thus the release notes aren't updated.
clang-format: please reformat the code