summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2017-08-08 14:53:52 +0000
committerAlexander Kornienko <alexfh@google.com>2017-08-08 14:53:52 +0000
commitf1a6552a95ef359317405b6b905e452c0577d22c (patch)
treeaf10b95774e60b52b2270e32b9b11a7e868a0145 /clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst
parent64d31edef33097f3878a12285a6db4d1e9488454 (diff)
downloadbcm5719-llvm-f1a6552a95ef359317405b6b905e452c0577d22c.tar.gz
bcm5719-llvm-f1a6552a95ef359317405b6b905e452c0577d22c.zip
[clang-tidy] 'implicit cast' -> 'implicit conversion'
Summary: This patch renames checks, check options and changes messages to use correct term "implicit conversion" instead of "implicit cast" (which has been in use in Clang AST since ~10 years, but it's still technically incorrect w.r.t. C++ standard). * performance-implicit-cast-in-loop -> performance-implicit-conversion-in-loop * readability-implicit-bool-cast -> readability-implicit-bool-conversion - readability-implicit-bool-cast.AllowConditionalIntegerCasts -> readability-implicit-bool-conversion.AllowIntegerConditions - readability-implicit-bool-cast.AllowConditionalPointerCasts -> readability-implicit-bool-conversion.AllowPointerConditions Reviewers: hokein, jdennett Reviewed By: hokein Subscribers: mgorny, JDevlieghere, xazax.hun, cfe-commits Differential Revision: https://reviews.llvm.org/D36456 llvm-svn: 310366
Diffstat (limited to 'clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst')
-rw-r--r--clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst b/clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst
new file mode 100644
index 00000000000..14e4d31f974
--- /dev/null
+++ b/clang-tools-extra/docs/clang-tidy/checks/performance-implicit-conversion-in-loop.rst
@@ -0,0 +1,21 @@
+.. 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.
OpenPOWER on IntegriCloud