<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97377>97377</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang recursive module tuple failure
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mmoult
</td>
</tr>
</table>
<pre>
[files.tar.gz](https://github.com/user-attachments/files/16060923/files.tar.gz)
I am unable to compile the attached files using CMake and Ninja. Here is the error(s) I get:
```
again/main.cpp:7:11: error: no matching function for call to 'get'
7 | auto [a, s] = again.next("something");
| ^
again/main.cpp:7:11: note: in implicit initialization of binding declaration 'a'
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_pair.h:855:5: note: candidate template ignored: could not match 'pair' against 'tuple'
855 | get(pair<_Tp1, _Tp2>& __in) noexcept
| ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_pair.h:860:5: note: candidate template ignored: could not match 'pair' against 'tuple'
860 | get(pair<_Tp1, _Tp2>&& __in) noexcept
| ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_pair.h:865:5: note: candidate template ignored: could not match 'pair' against 'tuple'
865 | get(const pair<_Tp1, _Tp2>& __in) noexcept
| ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_pair.h:870:5: note: candidate template ignored: could not match 'pair' against 'tuple'
870 | get(const pair<_Tp1, _Tp2>&& __in) noexcept
| ^
...
```
The code has no issues compiling if I change tuple -> pair, but that shouldn't be an issue. The same code compiles without any errors if I change again.cxx from module syntax to a header file (and change the CMakeFile and main import to correspond). This indicates to me there is a bug with the module compilation.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVk2PqzYU_TU3m6sgMCHAgkVm8lBn0a5mHxnbgF-NjfwxzbxfX9lkMq_Tqn3djFopwsa-Pvfcj_hAnZOTFqKD6gGq844GPxvbLYsJyu8Gw1_jziiVcJmnNpu-QXUG0szerw7KE5AeSD9JP4chY2YB0gcn7J56T9m8CO0dkD6dB9IXx_yYt6R8W3qDJC3kZ8hP2_MJ6YJB00EJ9AaZWVYZp7PADVZwTMcxOKknfPyZ_iqQao6_SP2VZviTsAKlSyeEtcYCaRyQFp9wEj6y_s4bHPPbL73SiUoNpF-o1BlbVyhPNZSnooDydAMrT6gNLtSzObofg2ZeGo2jscioUpE0kDq6IvWGiohYI9SPcYI0RIvqgQJ5RAfVGaE8Y_KcaXH1QBogxJlF-OgBCIkZKh_esfCOdXurvvwAfW28iKPUKJdVSSY9Si29pEp-oykGM-IgNY9xccEUtdsykJreg0k1tkB6JYdYfMaA9NfmeDke9krqcN1POsRqEyB9lv35ITVTgQsgPQPykH6b8SBTuzivLiuVNpuhPDVVBeWp-p4_o5pLTr1AL5ZVxYmctLGCp10TFI-2W4ki9wgGpN5S7Hxc8mFV4r0-TVXdU5oK16Qz5ePleS1imS7PK4HyC5AjXi4xxS1qI65MrP5jWe7F-OREHfPPSNQx_9FE_adz9SlNdfzYVMxEy_9fa9Wf0lr1x9b6h3T9q4xlWfaXF_72fJ4FMsMFztTF2106F4S7aU-8DeWIT8hmqieBiTfuofyycSOPOASPfqYe3RxD1zE6HKIqbVAZRg-OLjc3N1Fz-Jv0swkeqX7d5MX9wdUmCux6xdGaBRfDgxLoXrWn16gzFGdBubBJEBFIE2XwjeYsNm3s417ciKoQr35j_aas1gq3Gs2BtJGhdBgvf0a9cNFgSSCbmFIcwpToJuAbky2OJBLZjnclb8uW7kRX1EXbNE1xaHdzx5uqrUjZNmXBKW-akTdly8bhMDT1WB3ynexITg55nceBkDYrmrEoK1IWOcsF5Uc45GKhUmVKvSyZsdMuZbVr67Kud4oOQrn0CUMIU3STzOq8s1203w9hcnDIlXTevSN46ZXokjlawYJ18uUe11bikUoVrNgFq7q_-eKJkLdhv1rzVTAf_2GphYD0G8mXjvweAAD__1tw1pg">