forked from OSchip/llvm-project
35 lines
1.2 KiB
ReStructuredText
35 lines
1.2 KiB
ReStructuredText
.. title:: clang-tidy - performance-for-range-copy
|
|
|
|
performance-for-range-copy
|
|
==========================
|
|
|
|
Finds C++11 for ranges where the loop variable is copied in each iteration but
|
|
it would suffice to obtain it by const reference.
|
|
|
|
The check is only applied to loop variables of types that are expensive to copy
|
|
which means they are not trivially copyable or have a non-trivial copy
|
|
constructor or destructor.
|
|
|
|
To ensure that it is safe to replace the copy with a const reference the
|
|
following heuristic is employed:
|
|
|
|
1. The loop variable is const qualified.
|
|
2. The loop variable is not const, but only const methods or operators are
|
|
invoked on it, or it is used as const reference or value argument in
|
|
constructors or function calls.
|
|
|
|
Options
|
|
-------
|
|
|
|
.. option:: WarnOnAllAutoCopies
|
|
|
|
When non-zero, warns on any use of `auto` as the type of the range-based for
|
|
loop variable. Default is `0`.
|
|
|
|
.. option:: AllowedTypes
|
|
|
|
A semicolon-separated list of names of types allowed to be copied in each
|
|
iteration. Regular expressions are accepted, e.g. `[Rr]ef(erence)?$` matches
|
|
every type with suffix `Ref`, `ref`, `Reference` and `reference`. The default
|
|
is empty.
|