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

    <tr>
        <th>Summary</th>
        <td>
            clangd: Formatting Issue with `<` operator parsing in template parameter list
        </td>
    </tr>

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

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

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

<pre>
    When I attempted to implement `std::ostream &operator<<(std::ostream &out, const std::tuple<Args...> &tuple)`, I encountered formatting issues as shown below (it seems that there is incorrect formatting from `typename std::enable_if < Index<sizeof...(Args), void>::type` onwards):


```c++
// support cout << tuple;
template <size_t Index = 0, typename... Args>
typename std::enable_if<Index == sizeof...(Args), void>::type
print_tuple(std::ostream &out, const std::tuple<Args...> &tuple)
{
    // do nothing;
}
template <size_t Index = 0, typename... Args>
    typename std::enable_if < Index<sizeof...(Args), void>::type     //! <------- from here
 print_tuple(std::ostream &out, const std::tuple<Args...> &tuple)  //! <------- to there
{
    if (Index != 0)
        out << ", ";
 out << std::get<Index>(tuple);
    print_tuple<Index + 1>(out, tuple); // recursive call
}
template <typename... Args>
std::ostream &operator<<(std::ostream &out, const std::tuple<Args...> &tuple)
{
 out << "(";
    print_tuple(out, tuple);
    out << ")";
 return out;
}
```

System information
```text
>clangd --version
Apple clangd version 15.0.0 (clang-1500.1.0.2.5)
Features: mac+xpc
Platform: x86_64-apple-darwin23.2.0; target=arm64-apple-darwin23.2.0

Editor: vscode:
Version: 1.87.0 (Universal)
Commit: 019f4d1419fbc8219a181fab7892ebccf7ee29a2
Date: 2024-02-27T23:42:56.944Z (1 week ago)
Electron: 27.3.2
ElectronBuildId: 26836302
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: 11.8.172.18-electron.0
OS: Darwin arm64 23.2.0

clangd plugin version: v0.1.26

Operating system: macOS 14.2.1 (23C71) arm
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vl1v6zYP_jXKDRFBouKvi1ykSQP05j0vcPYB7KZQbCbRmW0Zkty0-_WDbNdJe9phwM5mGDEgUeTDh48Yau_NqSVas-SOJbuF7sPZuvWZUAgpEpksDrZ6Wf96phYeQIdATReogmDBNF1NDbUBWCp8qJjaMLWxPjjSDTBMbUdOB-uY2sYX8w-N-sBwC6VtfYDZIPRdTUxtN-7kOedM3UfbcRULlop45gGoLW3fBnJUwdG6Rodg2hMY73vyoD34s720cKDaXoBhbgJ4osZDOOsA4UyOwHgwbWmdozLcOjk628TMwktHrW7oCo5afajp0RyBqS08tBU9M7X15g-yxwgW8wg74sQtPFlTMXU_pfXSEUsF2PaiXTWYqA0TOybe_qZifEuGd_EdV3HPcA--7zrrApS2DzBSCxNdk2GsUa0DwYTqMYwggakdDMy95sQ5hwGrup-Ofp4sU9vZS3T0t_MdHHfOtOFxKuCPE8JITDYlDgAwsVRZaG04m_Y008Ky3T_mJ0b40YKAK2yGMrpYjs8owSjSKfi_Q-InwYMdL8gHHMdEMZ84QznRVlwN4nMjT4YYUcXPazFut2ecJwqvKosMYT7XWd1Ev2Vh1iTegRzPTBTcHH3VhKOyd948EZS6rv9CFJ-W_7_tcu-If09o_obPd8R8xMPV8r2r4o0rR6F3bTT6_u7Mrem2X3198YEaMO3YPo1t3xkHeg7Tkrova92eKlgun8j52XbTdTXBtDftgEy44CKKbdhYykQILrngyJOZoT3p0DvyTG2g0bFlPnfluPX_WoeIKW495-ljulrqGGdZaXcxLSqOXESFBO0G8e20az42ukn3vjJDvTfw5Etb0dzDf5kSUhuQPM9G5D-3Jqaj6xnw1jaNCdFKyOK4quRKFsdDmaMstMzlUR-yvEA6lOUxI8JC43hup0OMBShwtRS4xOwnVExtVsjUJkl5sVr9FiNKuBD9Dvpk55D3NZXBjdAw44rj2_W73tTVQzVsp7lKlZgMtmdnG9MPDEqZc8GTolBcJpPj_9mK-LeBe5lzmXE5UZGPJ3hcRC7zJU2hXrn88jVa7AaOYaAdvqd60kNX9yfTvspiYD7qANNb2y_DRYx_3X7Q46SHL19BrjhyGalBtc1k7HnaNR8KelGtVVWoQi9oLTMpCpWlqBbndSGwyldJKrKiqKREUpnWVBaU5vJAR1yYdayLUCgkYiYEz6tSCJHTKqlKkRWSrQQ12tS8rp8abt1pMcwp6zwpMFnU-kC1H8YwxJYu4xAT72WyW7h1PLM89CfPVqI2Pvirl2BCTeuRqZjz_jrDPEQfcDHhHCeZeOPj8DE1LOi088O41MLc_TrtdEOBHMQoi97V63MIXSzw2EVPJpz7Ay9tw3AfMUyfZefsNyoDw_04fjHcD5n9GQAA___VrgCq">