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

    <tr>
        <th>Summary</th>
        <td>
            Clang emits false positive warning '::' and '*' tokens forming pointer to member type appear in different macro expansion contexts
        </td>
    </tr>

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

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

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

<pre>
    The following valid/well-formed program produces a false positive warning in clang:

```
#define FOO A::

struct A
{
    int x;
};

int FOO *ptr = &A::x;
```
Clang says:

```
<source>:8:5: warning: '::' and '*' tokens forming pointer to member type appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Uk-P2y4Q_TT4MnJkDyGODz4km5-ve_lJPWMzdmgxIMC7m29f4STabqWqt0oWPGD-vHl-MkY9W6KOiTMTl0Ku6epCF6SV0jrni8GpW_f_lWByxrh3bWd4k0Yrhv07GVNOLiykwAc3B7nkXa0jRZAwSRMJvIs66TeCdxlsztYWRiPtzPiJVRdWPddD9fjuR-SKJm0J-tdXOOXgr_ExhXVM8LxrzncAAKBtgg_Gz8-nyyfe1vyeqzI8-RSA8QswPDx6_JL4ldFLJg1R3uJfmPOX6NYwEuP_MX46Mn4SjJ-e82fIsHkMhA1Iq7YL3E7J_SAbIauaxfJO20QBkoOFliGjmyeQ3pMMWUqlp4kC2QSLHIMD-vDSRu0sjM4m-kgRmDiX30a3eLdaVW4NyuiNTuVwK7csJi6_jVKojquWt7Kgrm5q0TQtr0Vx7abjUYx4UHg4NG1TK6EqfmyoxRaRHxpV6A4r3FeiFjXHet_uqnEYq2GPnHMlGqXYvqJFarMz5m3ZuTAXOsaVuhZRtIWRA5m4uRHx7hPEbMzQ5fhyWOfI9pXRMcXPCkknQ939D9GiU_yT-f6p8sUaTHdNyW-OwZ5hP-t0XYfd6BaGfab_2Eof3HcaE8N-UyMy7DdBfgYAAP__P9cb9w">