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

    <tr>
        <th>Summary</th>
        <td>
            [lldb] std::unordered_map const reference presentation is different from non-const reference
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          nd-work
      </td>
    </tr>
</table>

<pre>
    To reproduce, debug the following on macOS:

```
#include <unordered_map>

int main() {
  std::unordered_map<int, int> m;
  m[1] = 2;
  std::unordered_map<int, int>& ref = m;
  const std::unordered_map<int, int>& const_ref = m;
  return 0; // break
}
```

When breakpoint is reached, print `ref` and `const_ref`.

Expected: `const_ref` is printed in the same way as `ref`.

Actual: they are printed differently:

```
> clang++ -g main.cpp 

> lldb a.out
(lldb) target create "a.out"
Current executable set to '/path/to/a.out' (arm64).
(lldb) version
lldb version 21.0.0git (git@github.com:llvm/llvm-project.git revision c3b160bcaa7dd5b5564ae8868fb33e7ba6169283)
  clang revision c3b160bcaa7dd5b5564ae8868fb33e7ba6169283
  llvm revision c3b160bcaa7dd5b5564ae8868fb33e7ba6169283
(lldb) b main.cpp:8
Breakpoint 1: where = a.out`main + 88 at main.cpp:8:3, address = 0x0000000100000540
(lldb) run
Process 87854 launched: '/path/to/a.out' (arm64)
Process 87854 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000540 a.out`main at main.cpp:8:3
 5        m[1] = 2;
   6      std::unordered_map<int, int>& ref = m;
   7      const std::unordered_map<int, int>& const_ref = m;
-> 8           return 0; //break
   9    }
(lldb) frame var ref
(std::unordered_map<int, int> &) ref = 0x000000016fdff040 size=1: {
  [0] = (first = 1, second = 2)
}
(lldb) frame var const_ref
(const std::unordered_map<int, int> &) const_ref = 0x000000016fdff040 size=1: {
  [0] = {
    __cc_ = (first = 1, second = 2)
  }
}
(lldb) 
```

It seems to happen because LibCxx.cpp `isStdTemplate()` doesn't handle modifiers.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVk1v4zYQ_TXjyyACTeqDPvggJzFQoEAL7AI9BpQ4stmVRJWk8tFfX5Cy442zW2S3NQQLlOY9zrwZzkh5bw4j0RaKHRR3KzWHo3XbUd88Wfdl1Vj9sv1s0dHkrJ5bAn6Lmpr5gOFI2Nm-t09mPKAdcVDtb59A1MDSVbLTxWrgwoxtP2tCELfzaJ0mR_phUBOI-8XejAEHZUbgEvgGodoBqxF90JFS1FeoWzOG6Eu8iXscQCz2AxS7NRR3COIO-fnpx1iAl-ioS9BXwtaOPvwAQbJ_eEfjKMxuRAZih8D3wPfYOFJfYvDV3bVerP7jSONiMdkojfHoSLVH0nG7ycVnUDJHHZQM1ajj6nVvKFm28Nw_T9QGit5fW0TOREQazZjy6dVA-KReUPkL-4mpbsOs-sgTjvSCytErWpuuI0dj6F--nX9xj22vxgPwHfAd3hxSqrN2mvBkLe6x73WDKrNzSCUj4zqWQlDuQAFbRyoQAueLDefA6tvZxX2Rnqmdg2p6Qk8Bg0XgFfD9pMIR-D5Y4PsTrELgUrmhzIFvsrdbPZLzxo7A6uTMaYl8nbGMHUyI0IMJkMfFcW6y1g4g6r5_HIDv4-1mcvZPakMWrR09mkTQimZdsqZVqtK6aIqizBVJWcquEYKqRpXrcsOlAL5Zii6K9RPwiI1e_BT0Kx2a1_yAqCWwenepxHUsgacjOUoVvqhasgjAmFwpUYW3eFGLWLVKa0feJxh7Zstvnf6LnL31wM0xC78720aErGSRY6_mMZ2AWMsfSu87Ch_sNJFOe8VCdqQ0Ahfr6N9fM81LUMCr1g6ZmqaeshjKzWKadr1NLPE4ejsm86_O6Tpbpywgdi4eJuCCRX_fx_tWuW9JxmosEBHY5nt9Dcvz-__Q4bBaKP6XTncTT7I8e_W-652bHiJuFqtT-7ukfhHuUbno6vLqg1MAeJlq5-TSRfOy013Hcobe_E0g7lINn0cMFDt2Vha47IzzIS1SUXhqbeyuSfZUUf_i8KW9JoMfUfTs_FtVfyaE0zPEh4e2ffhwWIinwK7Dez-cfgnoiQYf--xRTVMcVdSq2RP-aprb5-els5fM-E9Bf6Zh6lWgZbLHwaMt-RF4FfCoRt0TDlabzpDz2Upvhd6IjVrRdl0VbLOWjMnVccu4ahWxouJSFlVTcZ2zspId8UptmkaszJYzXrCSl6xkZS6zalPknWxkuynLTjIJOaNBmT6LHTKz7rAy3s-0XeeFzKtVrxrq_fk7yG1TN2_mg4ec9cYHf8EFE_r0xZQkKu6-k-LTiXKUhmMb5yV5GoMKsTMbf5mb2Dk74GjHmyvIanb99hjC5CN_OkFfTZ5l5FxNHuD7FJcHvj-F9rjl_wQAAP__7h3qyA">