C++11: Remove const from in auto guidelines
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 7 Mar 2014 18:06:15 +0000 (18:06 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 7 Mar 2014 18:06:15 +0000 (18:06 +0000)
Using const is orthogonal to guidelines on using auto& and auto*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203257 91177308-0d34-0410-b5e6-96231b3b80d8

docs/CodingStandards.rst

index f9685d69ad5d7532bad189b78b4228cc825dcec0..2ebdfbc91bf61e376a77e21b58a8b59459e45ac8 100644 (file)
@@ -746,23 +746,21 @@ The convenience of ``auto`` makes it easy to forget that its default behavior
 is a copy.  Particularly in range-based ``for`` loops, careless copies are
 expensive.
 
-As a rule of thumb, use ``const auto &`` unless you need to mutate or copy the
-result, and use ``const auto *`` when copying pointers.
+As a rule of thumb, use ``auto &`` unless you need to copy the result, and use
+``auto *`` when copying pointers.
 
 .. code-block:: c++
 
-  // Typically there's no reason to mutate or modify Val.
+  // Typically there's no reason to copy.
   for (const auto &Val : Container) { observe(Val); }
-
-  // Remove the const if you need to modify Val.
   for (auto &Val : Container) { Val.change(); }
 
   // Remove the reference if you really want a new copy.
   for (auto Val : Container) { Val.change(); saveSomewhere(Val); }
 
   // Copy pointers, but make it clear that they're pointers.
-  for (const auto *Val : Container) { observe(*Val); }
-  for (auto *Val : Container) { Val->change(); }
+  for (const auto *Ptr : Container) { observe(*Ptr); }
+  for (auto *Ptr : Container) { Ptr->change(); }
 
 Style Issues
 ============