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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] Reference alignment options not honored for templated struct decltype(auto) operator() 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

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

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

<pre>
    ```console
$ cat test.cpp
template<typename T>
struct A {
    decltype(auto) operator()(T& x) {
        return x;
 }
};

template<typename T>
struct B {
    auto operator()(T& x) {
        return x;
    }
};
```
`clang-format-17 test.cpp` produces
```cpp
template <typename T> struct A {
  decltype(auto) operator()(T & x) { return x; }
};

template <typename T> struct B {
  auto operator()(T &x) { return x; }
};
```
Note that in A it produces `T & x`, in B `T &x`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykk8Fu4jwQx59mchmBnDEk5JADlI_jd1j1BYwzgFeOHdmTqn37VaDQ0t1qW20UKcqMx_P__-wxObtjYG5huYHltjCjnGJqnxwHKfaxe2mhUpfXxpCjZ1BbUGugBVojKJxlbofhEhXuB2-EQT_Iy8DB9IyPoP-7ZLOk0QquEerNJYKI2LH102KglRklAjUYB05GYgJaATVAq0egCp-n1F3p9CSWMQV8Bn1NQL191Vhvb9Fv6NvcN5lE_aMixE9EXdHefq034Tg7xNQbmZX1G95K4ZBiN1rOH2p_g48f3eGfwH8JO753-d7YVyB_quMO8Cd4p87faHwP8v8ojHIygi7gGp3c2CFU6uqqUkAP04rNLToFi67VXaMbU3BbVs2SVF2RLk6tNqa2h4b2HVteLVZWlyVzqbhc6sOSysK1pEirhlRZKkV6XtZNxV1pu0YZta8tLBT3xvm590_9PKZj4XIeua2qVaMKb_bs83kQid5fBCCaRjO1U9lsPx4zLJR3WfLbRuLEn4f4rnC5xR984MTBMhrvjqHnIBgHcTFkDFHwFENM3OEhJryeXHc9qb9eEizG5NuTyJBBr4F2QLujk9O4n9vYA-0mga-f2ZDiT7YCtDvbzkC7s_NfAQAA__8JRU_a">