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