================
@@ -0,0 +1,31 @@
+.. title:: clang-tidy - bugprone-unordered-equal-compare
+
+bugprone-unordered-equal-compare
+================================
+
+Flags uses of ``std::equal`` to compare the ranges of two unordered containers
+(``std::unordered_set``, ``std::unordered_multiset``, ``std::unordered_map`` 
and
+``std::unordered_multimap``).
+
+The iteration order of an unordered container is unspecified, so two containers
+holding the same elements may iterate them in a different order. Comparing 
their
+ranges element by element with ``std::equal`` is therefore order-dependent and
+can report equal containers as different. Use ``operator==`` instead, which
+compares the containers as sets.
+
+.. code-block:: c++
+
+  std::unordered_set<int> a, b;
+
+  bool wrong = std::equal(a.begin(), a.end(), b.begin());  // warning
+  bool ok = (a == b);
+
+Options
+-------
+
+.. option:: Containers
+
+  A semicolon-separated list of the fully-qualified names of the unordered
+  container class templates to flag. This allows out-of-tree containers such as
+  the Boost ones to be added. Defaults to
+  
``::std::unordered_set;::std::unordered_multiset;::std::unordered_map;::std::unordered_multimap``.
----------------
EugeneZelenko wrote:

```suggestion
  the Boost ones to be added. Defaults to
  
`::std::unordered_set;::std::unordered_multiset;::std::unordered_map;::std::unordered_multimap`.
```

https://github.com/llvm/llvm-project/pull/210555
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to