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

    <tr>
        <th>Summary</th>
        <td>
            [clang++] Use of incomplete class in destructor `requires` concept fails
        </td>
    </tr>

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

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

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

<pre>
    https://godbolt.org/z/Pz7KEj73e

```c++
#include <concepts>

class foo;

template <class T>
class bar {
                ~bar()
                        requires std::destructible<T>
                {}
};

int test(bar<foo>*) {
        return 0;
}

int main() {
        bar<foo>* ptr = nullptr;
        test(ptr);
        return 0;
}
```

```
$ /clang/bin/clang++ a.cc -std=c++23
/workspace/a.cc:6:7: error: no viable destructor found for class 'bar<foo>'
    6 | class bar {
      | ^
/workspace/a.cc:18:2: note: in instantiation of template class 'bar<foo>' requested here
   18 |         test(ptr);
      | ^
/workspace/a.cc:7:3: note: candidate function not viable: constraints not satisfied
    7 |                 ~bar()
      | ^
/workspace/a.cc:8:13: note: because 'foo' does not satisfy 'destructible'
    8 |                         requires std::destructible<T>
      | ^
/usr/lib/gcc/aarch64-linux-gnu/14/../../../../include/c++/14/concepts:155:28: note: because '__detail::__destructible<foo>' evaluated to false
  155 | concept destructible = __detail::__destructible<_Tp>;
      | ^
1 error generated.

$ /clang/bin/clang++ --version 
clang version 19.0.0git (https://chromium.googlesource.com/external/github.com/llvm/llvm-project 084e2b53d22c11e013b0a495b65d39aa7f934048)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /clang/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVk1z4ygQ_TXtC2UXAn0efHDiuGprL3vInlMI2jIzGLyAPJk57G_fQrJsOZtJZiiXbTU0_ejX_YQIQXcWcQ3FAxTbhejjwfm1EWf0CuOider7-hDjKQDfANsB23VOtc7ElfMdsN0PYLu_flR_Pn2pOALdAt1cvks6fiSwh_QZrYxrK02vkAB_lM5KPMUA_GnuKo0IgeydA_4wt0c8noyIo-uw5vnqOT63whOork4N0ObfVnhgNbBmbgXaePyn1x4DCVGlw_GNwhB9L6NuDQJ_fJ7BGnyqB6i2F0u1fQNO20gihgisThH544D_CdgGWHMHymPsvSX0tsF11-tOR6HtiPrO9c3O5BQ9Ab4ltjfmFP0MUnPBkqysmU98EH6i7F0eJwJzAmwnjbCJ_jbBnJ4SzUSspCTLIafbC_WMT767b85_DSchEdgurQS-KYFvKuAbgt47n_5YR85atAbJxIjzZO96q8jeeTJSDay6z0Y1BiGEkJJA9UjeKQkyjDQJxdNHoLIa-IaNYCKmX22JtiEKG7WI2lni9uRakD-DRFKRYYioyAE9XkFk9QBiGu9z9ctgU_b4HKsUVmmVgO17Kwe01sVLUocFzobohbYxDDNBRB32GtUtcnWHcBpvu-mXMaZ8ZncgW5SiD5iylvLFKqIczuF8T1N3PTnnuH4X3zR-o7nfP0IfPLCd0W1SPCnTQYSXhzJfGm3712Vne2C7LAe2W63-_3URudQbF_m7LL5J3iYrilRk9U-S8vKiMAptRvjp6e4AtxrDszC9SDUWHdkLE651lhXF2AljUDLfYtCNT2K8PJ9SjA8KMhu7lnRo0ScMqzvt-Ewslssz-pDq86ritiOTLWtWdEU7HQmw-v4lJA_eHXV_XHXOdQaD673ElXRHYDt8jeitMIk5HQ99e7Ebc55-lifvvqCMhNY5srbgijGZZUgz3lKRN0VbFoo3QlT7huc0vxX8s_AdxkTVVA-9_WrdNzuri3HhwaNQ5OgUpvSSkwv6dZz6I-mIMai2etC7Nym6l92FWnPV8EYscJ1VjJVNXeTN4rDmTSZlibQp67zlZZsXJUOlJK1Usy9rttBrRllOa8qzgjHWrNoWRdNmLVLMWJ5zyCkehTarlJL0Pl_oEHpcZzSrOVsY0aIJw82AsQtAli4Jfj3ksO27ADk1OsRw2yLqaIbrxIxnKLbk74BJMrWV7ngyeBVNbecqDyWdWhdKei3cvdAmLHpv3t5FPuE3dWI6UkjtN57qvGb_BQAA__8ChZSL">