<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/104049>104049</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] compiles malformed code successfully: variant with array
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tryfinally
</td>
</tr>
</table>
<pre>
clang upto trunk compiles a variant with an array alternative.
https://godbolt.org/z/Gf3M69v4K
MSVC correctly rejects the code.
std::variant requires all alternative types to be Cpp17Destructible. See [22.6.3.1](https://eel.is/c++draft/variant#variant.general-2)
arrays are not [Cpp17Destructible](https://eel.is/c++draft/utility.arg.requirements#:Cpp17Destructible)
```cpp
#include <variant>
std::variant<int[3]> v;
int f() {
return std::get<0>(v)[1];
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUk0-vqzYQxT_NsBldZMY4JAsW-fPoonqrJ3VvzIS4dYDaQyr66SsS7nu390mVKiGDwHPOb8wcm5LvB-YazAnMJbOz3MZYS1yufrAhLFk7dkvtgh16nCcZUeI8_IFuvE8-cEKLDxu9HQT_8nJDO6CN0S5og3AcrPgH5wjqAup4E5kS6CNQA9T0Y9eOQfIx9kDN30DNL1f9dXd4lL--tr_Wr99-O6MbY2QnYcHIv7OThHJjdGPH-ce9SbpVXh_fkSL_Ofu4UobwkQhlmTihjNgynqepqC6cJM5OfBs4x2_MCOZElO9ynRdgLkD7f-Mzh9wnoMYBnYBOXbRXAWo2ayC9PeU9DxxteCOgw4vzeUIJbWQcRlmdfmL4P5az-OBlyW3s863jOw-SgDTo48_S7xjbulOvy03T9oa0H1yYO0bQ5_eG9Jf_OmrQZz8ImJNeyfUXfIA-fSzwg-AVaA90QKi2T4iIkWWOA34X7HkVU6sf7R8rrDk9_8B3veryiTzrat0d9MFmXBcV6Z0pTKmyW61sURwqVrZ0rmyVMa02ll1nuv2-KkvKfE2KSrUvymKnTKlys3dX1VambHVFnbFQKr5bH_IQHvd1VjOf0sx1oUpVHrJgWw7pGR6iZ0iAaM1RrNeCt3buE5Qq-CTph4R4Cc_EvSrM5Uec7jZcx3jn7jndmGbnOKXrHMIC-vgpa-sYZXMM9adkebnNbe7GO1Czmm63tymOa3qAmmcT6yhtfTxq-icAAP__-7A-dQ">