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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format]: Cannot align declarations in lambda when initializing lambda with uniform initialization.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    In modern C++ we like to have a uniform initialization of our variables. For this we uses the {} syntax.
However, when using this to initialize a lambda function with variable declarations, we get wrong formatting:

I have reduced the error to the following minimum example:

`
.clang-format
---
Language:        Cpp
AlignConsecutiveDeclarations: Consecutive
Cpp11BracedListStyle: false
`

And a cpp file:
```cpp
#include <mutex>

void SomeFnc() {
  auto const callback{ []() {
    std::mutex m;
    std::scoped_lock lk{ m };
  } };
}
```

Formatting with the above .clang-format gives:
```
#include <mutex>

void SomeFnc() {
  auto const callback{ []() {
    std::mutexm;
    std::scoped_locklk{ m };
  } };
}
```

I.e., it removes the space between the type and the identifier. This produces uncompilable code.

A short-term fix is to initialize without {}. This produces:

```
#include <mutex>

void SomeFnc() {
  auto const callback = []() {
    std::mutex       m;
    std::scoped_lock lk{ m };
  };
}
```

But a {} style would be preferable to stay consistent in initialization.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVcuO6zYM_Rp7Q8TwI85j4cUkadAB7u52X8gy7agjS4YeyaRfX0qeSZOZAe4F2gI1jNgyJfLwkDxpdXdtnhWMukOjYJ-UO7rhgiDFC4LTcGJnBAZeiV6bEYQSTjAp_mROaAW6B-0NnJkRrJVoMzhqA-4kbPDhLVpaICTrXbI-gL0qx16zJD8k-dOv-oJnNEm5h8sJFW0WapiPUthbnBBcsrHtGPRe8Rj1ItzpFhM65JKZiMdGbwgDOrgYTf4CaOYcuU6qpznw_Ps8Z2aw8xy7iBKNCeB1XPRaSn0JkEbCMvoR8JWNk8QPfpJVPr9khEINizng_GmxWMwv38ji2RDOwtu1n6bZ9iTFoPaEHbl34oyH-3Ro_51pPkAni2JnGMH-Jqz77q4RFPRMWvwA6i2E6ohFPk3Qi_sEaFe8-TuWpKyE4tJ3VLJqP3qHr0n1y72rsxYdfNcjHhVPyk1SbmNxow2AeWKPE2AHnEnZMv5CVkjqXVIfPm8HsK4LcKqnGAvGpPrKaLmesPtdav4CMnocyc3hbnPorvsv4f0xx_skjremmFsp1Ju1mtrhoYgwEOf2M13_C65-TNW_wdRzhlmYKeFoUkZiaJ5nO1H3QYvugjS54Yu7TsShmgdJdKic6AWaDH4LAz0ZHcbMkoxwPU5CxsHlJDrZQ5-CPWnjFg5JaXrxCp-0IJRLe_cmKB-8fzGZ_229yNHh55t7vv5Ji_9k0XZEELtpbpAHuGgvOyoYcYU9mkg_pWMdu8acSEeoZMT0B4HPUmyK1WqVb5flept2TdVtqy1LnXASG0r9QfSIhiBYTClNCIKuPYhzcP8m5VHxb6HCIL4bwjx-_WeTpd7I5uTcFCtdHukeaLtvM2oqWkh5fn8sqCf-QO5oKaz11Bvlsd4sq1V6aviyXa2xKJaIebVka9ZVbV4zXBXbrmKrLqXuRGmbubCpaMq8LIu82BRFva43WV2slj1n9baoq_WmWifLHEcmZBYCZ9oMqWkihtYPloySyLV_G5m1RAziu3_qK2r6hkl8sTRAaLR1xk9pxN1E0H8Br49QqA">