<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/141085>141085</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [OpenMP] OpenMP atomic compare fails when including <array> with `using namespace std;`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jhuber6
      </td>
    </tr>
</table>

<pre>
    The following code causes a compilation failure only when `using namespace std;`. https://godbolt.org/z/adKe7x84c.

```c++
using namespace std;

#include <array>

template<typename T>
T atomicMin(T* acc, T value)
{
  T old;
#pragma omp atomic capture compare
  {
    old = *acc;
    if (value < *acc)
    {
      *acc = value;
    }
  }
  return old;
}
```
```console
$ clang++ main.cpp -fopenmp
main.cpp:1:17: warning: using directive refers to implicitly-defined namespace 'std'
    1 | using namespace std;
      |                 ^
main.cpp:12:15: error: the statement for 'atomic compare capture' must be a compound statement of form '{v = x; cond-up-stmt}', ''{cond-up-stmt v = x;}', '{if(x == e) {x = d;} else {v = x;}}', '{r = x == e; if(r) {x = d;}}', or '{r = x == e; if(r) {x = d;} else {v = x;}}', where 'cond-update-stmt' can have one of the following forms: 'if(expr ordop x) {x = expr;}', 'if(x ordop expr) {x = expr;}', 'if(x == e) {x = d;}', or 'if(e == x) {x = d;}' where 'x', 'r', and 'v' are lvalue expressions with scalar type, 'expr', 'e', and 'd' are expressions with scalar type, and 'ordop' is one of '<' or '>'
   12 |     if (value < *acc)
      |         ~~~~~~^~~~~~
main.cpp:12:15: note: expect binary operator in conditional expression
   12 |     if (value < *acc)
      | ~~~~~~^~~~~~
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVcuS6jgPfhqzUTUVnATDggXQzeavU_8seAHHUcCnHDtlO1xmMc8-pTg0l5k-PTOpdMdY0if5kyXJEPTBIq5YuWHl-0T28ej86uexr9DPJ5Wrr6v9EaFxxriztgdQrkZQsg8YQIJybaeNjNpZaKQ2vUdw1lzhfEQLbJ71gYysbDF0UiGEWLN8w-bZFI4xdoHla8Z3jO8Orq6ciVPnD4zvfmd8J-v_obgsCjVl2ZreeZZexfiG3mz9BXpS57m2yvQ1Asu30nt5ZflHkkVsOyMjsnwbrx0SAOyTdA8yularH9oyvtgzvgapFONb2MNJmh4ZXxKIIDcAe3Dm5pPnnZeHVoJruxEFlOwikUJESY-Dzc0WyBZY_g6Mr8lJftvXDTC-GNxR8Df54JnkdwQYZQNMiu8ThYn30V_6eoy9tw8BD_uftD5R7GxwBodTFaCMtIdEOrRS26nqOnhrXIe27Vi2vu2xfD2jP8HyNZylt9oeaJnSVGuPKuoTgscGfYDoQLed0UpHc32rsdEW64dsMi4ooVyM55kBE1v4MucjHWILrw8rP16i5PSvpNjQe-dpEY-EJSO2aCM0zpP_WxZT9m7ZZFxA24cIFY414HpbP1i7hgBaQmBicxqSc2H5BpSz9VvfvYXYRqKfC7pZw4c0H8VwN3vWFBvdML64kJg06EbSjRg2oE76gCYgPDknlBcgn4R3pHwDA7j_O8y7dSLnXwN8F9T5iH5I-8hDLSMmqrgAJS0c5Yn6CxLB8aktEd3UTMh6CAAvnQfna9fB5SkWErxyOhKa1AeFf2jxqxQ8cZViuulfvtC_M3C5u_LjUtqafp5Ijy6jSf2BosMQtLMBzjoeIShppAdqbCNCOtEND5_x6hved0Cj_kAS2ehwSwUB5lvaGy9G_vFZtTP-WZLfdbXn4v1jeFj5kb5f1a911MbXFD2qCJW20l_BdehldB60HWpO04SS5uGM_zG6v0T12TIn9Sqvl_lSTnA1E4VYclEsi8lx1RRNmYtmXvHlLC8q0XCF1VzmYoZl2WRiolc842VWcj4reVEWU6FUnokyR7moZsWyYEWGrdRmasyppQk50SH0uJoVs2xRToys0IRhhHNu8QyDlHFOE92vyOit6g-BFZnRIYY7TNTRDLP__x3aH7-x8h3SCl4aH832kIZ6GqpUcw9jNV2YX837Se_N6mXk63jsq6lyLeM7imn8vHXe_UQVGd8NJwmM78ajnlb8zwAAAP__HDuG_w">