2016-01-29 23:21:32 +08:00
|
|
|
performance-implicit-cast-in-loop
|
|
|
|
=================================
|
|
|
|
|
2016-04-01 07:09:42 +08:00
|
|
|
This warning appears in a range-based loop with a loop variable of const ref
|
|
|
|
type where the type of the variable does not match the one returned by the
|
|
|
|
iterator.
|
2016-01-29 23:21:32 +08:00
|
|
|
This means that an implicit cast has been added, which can for example result in
|
|
|
|
expensive deep copies.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
.. code:: c++
|
|
|
|
|
|
|
|
map<int, vector<string>> my_map;
|
|
|
|
for (const pair<int, vector<string>>& p : my_map) {}
|
|
|
|
// The iterator type is in fact pair<const int, vector<string>>, which means
|
|
|
|
// that the compiler added a cast, resulting in a copy of the vectors.
|
|
|
|
|
|
|
|
The easiest solution is usually to use "const auto&" instead of writing the type
|
|
|
|
manually.
|