<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">