<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/104268>104268</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang fails to find operator `->`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ahatanak
      </td>
    </tr>
</table>

<pre>
    ```
struct D {
  template <typename T> void m() {}
};

template <typename T> struct S {
  void init() { (*this)->template m<T>(); };

  D *operator->();
};
```

clang rejects the code with the following error message:

<source>:6:35: error: no member named 'm' in 'S<T>'
 6 |   void init() { (*this)->template m<T>(); };

It looks like clang's behavior changed after 1595988ee6f9732e7ea79928af8a470ad5ef7dbe.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0k8GOnDAMhp_GXKwZBQcIHDiwMztSz9sXCIOBdAMZJWFW-_YVMN3dqu2xEgoGxZ_9W791CGaYmWvInyA_J3qJo_O1HnXUs35NWte911CIxyPOIJoQ_XKNeEZQT_sfxMjTzerICPIU328864nxO8hnvDvT4QRUAlVbhjrvSWsgH4D9_DfkUfLla8kNbGYTP9m4hU0cTQCqDiCfP5ATyNOK2i-DfMI_6-OqiRp3Y6-j84ev1__S8-9T2c-r1fOAnn_wNQaMI-PVdYxvJo7bV--sdW9mHpC9dx4nDkEPDLL5SgF5Cm7xV147kE0BspE5yGZPWoPZ4cRTyx7XIXUIpCYghWZew5cPseqhrEBQJ_wfQ_sW0Tr3GtCaV8ZNP5AK2PKo78Z5vI56HrhD3Uf2mOZVXpUlc9FXShIr1qqqqNR9qTMldJdzr7qWj0lXy66SlU64ThXJQpHI0mSsc51WLKkQivosTUkWLNsyzVWmRCF0l5iaBGWiTDNKM0XpMS8E50oJ3VZVoTsNmeBJG3u09j4dnR8SE8LCdSoyKsrE6pZt2DaCaBckm967OfLcAdG6J75ecw_tMgTIhDUhhk9aNNFyvVuh18YGjA57M3f4y1oIhdjsVYhk8bYeY7yF1QR0AboMJo5Le7y6CeiyUh-vw8271VhAl63hAHR59Hyv6WcAAAD___mmFqE">