<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64210>64210</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang frontend select operator problem
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kelbon
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/WT5547nez
This code does not compiles until you uncomment int _ .
Its loophole, because compiler do not sees operator() until it deduced 'auto' type and caches it
```C++
template<auto X>
struct constexpr_t {
consteval operator auto() const noexcept {
return X;
}
};
void foo() {}
template<auto X>
constexpr auto constexpr_v = constexpr_t<X>{};
int main() {
//int _ = sizeof(constexpr_v<foo>.operator auto());
constexpr_v<foo>();
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEk8Fu4yAQhp9mfBk1IjiOk4MPbdJIe6-0e6swTBJ2MVgwjto-_Qo7cbNVpbUQlhjm5_sZRqVkT56ogeoJqn2hBj6H2Pwh1wZftMG8N2fmPkH5CPIA8nAKpg2OFyGeQB4-QB5-vlTVqvb0AWIP4nGaX842oQ6G0ARK6AOjDl1vHSUcPFuH72HAwevQdeQZrWd8xcWU_IMTuhD6c3AEcoctaTUkuilENGFUTEQJQ09RcYggNyC3V3HLaMgMmgyCrNXAAWSN_N4TKm9QK32mhJbvkWEtprED-ZTHuMrU9U4xQbnLMvgLyucpkjgOOtvyiemtj6-MUF-zEPEauCg3I-IEMnKOUfSB3jT1XzLzF4mH6PNxtwDU-ytovZ9Xp_kSrMFjuGlnsXnzf1zM-CPcnZsLQrm_dwflbkybxP8FyOXrlPV3ALOb6d1MBc6SyX5QOILc3J0F5S7jl8-Lb-4qj_kWvku6bpuRZu-3ihamKc223KqCmuV6K6pa1KuqODeiro-mXm6IWmr1VleVWlfHjVwasyolqcI2UshS1HKz3FRbUS2kbo1QlZTtut2QOMJKUKesWzh36XJXFDalgZr1Si5F4VRLLt2aKzZ500M7nBKshLOJ02caW3bUaKf8CY8xeCZvMJEjzZ8PqI-hddQVQ3Rf-9LyeWgXOnQgD1n0-nvoY_hNmnMJMlgCeRjZ_gYAAP__2Q03CQ">