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

    <tr>
        <th>Summary</th>
        <td>
            `decltype(some_concept<T>)` gives `void` instead of `bool`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++20,
            rejects-valid,
            concepts
      </td>
    </tr>

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

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

<pre>
    This GCC test should be well-formed, but is currently incorrect. Note that adding `typename` on the last line fixes the problem.

```cpp
// DR 2446
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify %s

template <typename T> concept C = true;
template <typename T> struct A;
template <> struct A<bool> { using type = bool; };

template <typename T>
void f(A<decltype(C<T>)>::type); // OK, no 'typename' needed
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEUk_r4zYQ_TTjy5Agj_8ffEicpofCFpbteZGlcaxFtowlp5tvX-Sk6W_LwoKR4c3oPc17I703t5m5heIMxSWRWxjd2qpvuk96px_tl9F4_L3rMLAP6Ee3WY09499s7WFw68QaqMN-C2g8qm1deQ72gWZWbl1ZhSN-coExjDKg1NrMN4RShMfCs5wYSoFuxjAyWukDWjMzDuY7-x1bVtdbno4gLiBOr7MUz08tywuhK9AVL5-R8rz8Afv81yfITghUKCvn21elUjz4oCG7KKAz0JkEHgb_mIP8fnCzfeDhzqsZHvGO_6gbeFqsDIyQdf8-H79A9hsqNyteAnYI2QXDujFk519d8mHdVMDTT1t_bOh652yEoDrj5qOFkWtXe5bOCNXlzfQL6Wf57ozGAaiOApqVjT1AdQdZt3dRE8_sBNnpWWp2naevf_4RU58dAlXvLKnCmVmz_l9QiW4z3WSNTLhNy1qkVDZ5nYwt5Y2SWVlUtU6Locoo7RtJfdUUTU6yTBPTkqBMZNRQWhR5fSxU1RRClA0XUgy1gFzwJI09Wnufjm69Jcb7jdsyrdM6sbJn6_fdJnrnDURAHRCt_I1V8Ie7tEa_0VeaPgLFJVnbSH3ot5uHXFjjg_9PLJhguYVSfDDQu4m_vkg-eFkKvJk7-7j90fsImNkHlhrdENE9ylIk22rbMYTFR_N3u28mjFt_VG4Cukbx1--wrC6OAHTdx_ZA133yfwIAAP__IEgmlw">