<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65907>65907</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
std::pair constructor helper __pair_like_explicit_wknd not SFINAE correctly
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++,
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
huixie90
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
huixie90
</td>
</tr>
</table>
<pre>
The following code, extracted from Boost.JSON, compiles under C++20
but fails with Clang trunk libc++ in C++2b mode:
```cpp
#include <type_traits>
#include <utility>
struct kvp {
kvp() = default;
explicit kvp(std::pair<int, int> const& p);
};
namespace std {
template <>
struct tuple_size<kvp> : std::integral_constant<std::size_t, 2> {};
template <>
struct tuple_element<0, kvp> {
using type = int;
};
template <>
struct tuple_element<1, kvp> {
using type = int;
};
} // namespace std
int main()
{
kvp k1;
static_assert(noexcept(kvp(std::move(k1))));
}
```
(https://godbolt.org/z/4cGdPxrxx)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVEuP4zYM_jX0RdjAppyHDz7kMSnaw7bA9m7IMpOokSVDomcy--sLOa-ZbYuiQAGDkvn8RH2UitEcHVEN8w0gnkZzMVTlgAjzXaZGPvlQ37VZ67v3-vcTiYO31r8ZdxTadwS4FXThoDRTJw7B92LjfeTZL99-_ZqM2veDsRTF6DoKYgu4AdxgDvkO8nU7sjgoY6N4M3wSW6vcUXAY3VlY0-qrszDuEdeKPlWV62v8TS7y66eH4aZBaZy2Y0cC5JbfB2o4KMMR5MvfeYxsrOH3p3WSkcOoWZxfBwHLzVUn0i_gCrASIHeio4MaLYN82OkyWKMN3xwjdwmuXA_KBJBb4zj1JS3yRWjvIgMuxABYPZLAcvfcT9KpnuKgNInI3RPNVTL1g1U8neRxhBt4HgdLTTTfCeQ2IZIvAuRaPGAZx3QMyjYTFJVgbR_GFNdMeHEKXG7-Cu3fq5OlnqbEeUp1R_Fs6RgTn9I1TT2devOPrfgv9Yr_oR4sdwJwD7gXn27ho49xLHpl3JUY97iPlBHn4smRyIqNblSMFBhw5TxdNA1p-wNpev9KSVuktI_vI9jPE3An9-rEPMSUY0J-9F3rLc98OALuvwPuS_1T99slXC6AVdbVsqtkpTKqi0VVymW5qorsVK9wMZ9X1VzhsutaVFW3krrVrSqlWlKZZ6bGHGVeFXlRlYUsZsWhWuVYIR7ykipaQZlTr4ydWfvap_KZiXGkejGv8mVmVUs23h6g58CnJwi3gOjoTUz-t0cp1CnNl3Y8RihzayLHZ2I2bKn-NG7X8UrM8EGcyA4URNMkS2PNmZr7qDZvZ9cJ51l82__8dZ3GMgTSbN-zMdj6h14aPo3tTPsecJ-q35YvQ_B_kGbA_YQ5Au6nY_4ZAAD__5iwmU0">