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

    <tr>
        <th>Summary</th>
        <td>
            `__is_aggregate` should accept arrays of incomplete types
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          frederick-vs-ja
      </td>
    </tr>
</table>

<pre>
    Current this code snippet doesn't compile with Clang ([Godbolt link](https://godbolt.org/z/9KEEMosj8)), because Clang's `__is_aggregate` rejects array of incomplete type:
```C++
#include <type_traits>
struct incomplet;
static_assert(std::is_aggregate_v<incomplet[]>);
```

This snippet is made well-formed and well-defined via [LWG issue 3823](https://cplusplus.github.io/LWG/issue3823). While a workaround using `std::disjunction_v` is implementable without compiler change, it may be more efficient to fix `__is_aggregate` instead.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxtU02PmzAQ_TVwsYLADgQOHDbZdA9tb5X2GBl7IM46GPkjafrrO4ZNtqoi2cae8YzfzHt0Rt7aXbAWRk_8UTkijATiRjVN4Ik04MaEbjyaz5PSQK7KH8lO83EgCa2TcvtmZGe0J1qNH0n5isaj95NL2EtCv-EYFn9m7ICnPzib7_v9T-NOdUKbeexIB4IHB0tifM-RpMoPB-UOfBgsDNwDGoiFEwjvCLeW34jpiRojLg0eiL9NEB_NX5P8BS8vY5fQbRyLlTIM0AELTNguBhy85coj2P1yw3kbhP9Km7Dt3cG9EgfuHFiPNTov42Ps5V-Ihwum_Yott7EfmBprvOd5APs8zuuv2Pd7y3F75ojwClqvemPPIAkf5XKW0KsRDRfFCeb_8f6G910AwmrKnnVfTDq4OLMBiQtdpgxaMQ7XOXIOpE1G3o-RXk6uxn5wawI-GZyKNFf5o1qp3CmMwiszYrHICKJVsdoz6od3n_ow4aEXS8QRKYVIsvJY2Q25JmdjgUDfK6Fm3RnSq9_PKVej88BllkJbVFVdFvWGsVS2TDas4alXXkP7NNIhDo29EwImv0jGPdGMS4PV7X-aXXqF9_Cg9eX-WU3WRAXem-dwUzZ5TtNjS_NyXYteiqpsOiiLjay6nlHo8lrwqi9TzTvQro2yoHSE68Ic7pG3VGE8pUVRlAWjJWNZRfm6L8RmTTsOGyGSdQ5nrnQWccSfKbXtDKkLg0OnVs67LycKVQ0jQLuoMOUBabFtb0GCVeJjdXGrE09nCO1cwl9PbU9A">