================
@@ -0,0 +1,121 @@
+.. title:: clang-tidy - bugprone-incorrect-iterators
+
+bugprone-incorrect-iterators
+============================
+
+Detects calls to iterator algorithms where they are called with potentially
+invalid arguments.
+
+Different ranges
+================
+
+Looks for calls where the range for the `begin` argument is different to the
+`end` argument
+
+.. code-block:: c++
+
+  std::find(a.begin(), b.end(), 0);
+  std::find(std::begin(a), std::end(b));
+
+Mismatched Begin/end
+====================
+
+Looks for calls where the `begin` parameter is passed an `end` argument or vice
+versa
+
+.. code-block:: c++
+
+  std::find(a.begin(), a.begin(), 0); // Second argument should be a.end().
+
+Container Methods
+=================
+
+Looks for calls to methods on containers that expect an iterator inside the
+container but are given a different container
+
+.. code-block:: c++
+
+  vec.insert(other_vec.begin(), 5); // The iterator is invalid for this 
container
+  std::find(a.end(), a.end(), 0); // First argument should be a.begin().
+
+Output Iterators
+================
+
+Looks for calls which accept a single output iterator but are passed the end of
+a container
+
+.. code-block:: c++
+
+  std::copy(correct.begin(), correct.end(), incorrect.end());
+
+Reverse Iteration
+=================
+
+The check understands `rbegin` and `rend` and ensures they are in the correct 
places.
----------------
EugeneZelenko wrote:

```suggestion
The check understands ``rbegin`` and ``rend`` and ensures they are in the 
correct places.
```

https://github.com/llvm/llvm-project/pull/99917
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to