linux-packaging-mono/external/llvm-project/clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst
Xamarin Public Jenkins (auto-signing) 468663ddbb Imported Upstream version 6.10.0.49
Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
2020-01-16 16:38:04 +00:00

22 lines
785 B
ReStructuredText

.. title:: clang-tidy - performance-implicit-conversion-in-loop
performance-implicit-conversion-in-loop
=======================================
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. This means that an implicit conversion happens, which can for example
result in expensive deep copies.
Example:
.. code-block:: 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 conversion, resulting in a copy of the vectors.
The easiest solution is usually to use ``const auto&`` instead of writing the
type manually.