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

    <tr>
        <th>Summary</th>
        <td>
            cassert in comparable with c++23 multiple dimensional subscript operator
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    The following C++23 code fails to compile 

```
#include <cassert>

struct foo {
    int operator[](int i, int j) {return 0;}
};

int main(int argc, const char * argv[]) {
    foo f;
 assert(f[0, 0] && "");
}
```

With the error
```
<source>:9:17: error: too many arguments provided to function-like macro invocation
    9 | assert(f[0, 0] && "");
      | ^
/usr/include/assert.h:92:11: note: macro 'assert' defined here
   92 | # define assert(expr)                                                  \
 |           ^
<source>:9:5: error: use of undeclared identifier 'assert'; did you mean '__assert'?
    9 |     assert(f[0, 0] && "");
      | ^~~~~~
      |     __assert
/usr/include/assert.h:81:13: note: '__assert' declared here
   81 | extern void __assert (const char *__assertion, const char *__file, int __line)
      |             ^
<source>:9:5: warning: expression result unused [-Wunused-value]
    9 |     assert(f[0, 0] && "");
      |     ^~~~~~
```

It appears the preprocessor does't understand the new C++ index syntax. This was 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TX0ZRBDIvVhH3SwnTXQ-wJ7NGhyZHFLkQI_nOTS316MLCdxWqDdogQBCRzOvDfzOKSM0VwcYsfqPaufVzKnwYdOGemU8VGuzl6_dd8HhN5b61-Mu8CB8T3jey5AeY3QS2MjJA_Kj5OxCKzY0WyKZRY7xoVxymaNwMRByRgxJCa-3XbGFLJK0HsPrN2zYgcAYFwCP2GQyYcbN8Y3tGgYP8zWn4xvySFgysFBwcSetc8Usn2m_zk2bRylcYuzDBdF_sq7mEANMgDjO1q-3kG2n0gQpf4WCxbSfNOzel9QkILVz8B4w3gDjPN5bhfkG5HPJSh2P0waIA0IGIIPX-3iEH0OCqksYrdlYle2TOyWzWIHyXsYpXsjtnlElyJMwV-NRk3V77NTyXj3ZM3vCKNUwYNxV68krS4JUXKHX0sF5kFurJ4F48ccA-PHRVHGj7d464F4cyJeEl_nE9L3RoXx9g7bgsbeONQwYMAbxJbfILhYjB8k8XUKJMsvD1YfKDjF_bz47e-rXT8UO0cE30N2GpWVATUYjS6Z3mB4yIWJPWij4c1nGFE6Mp5On8zHh9LT-O_l_4PGwyKNd7h_EmdDupTisziPbOE92w9lNuUMhK8Jg4OrN_odEBjfPHbS3UIn7i9tdjr1xuK9fU8naxxSnl_z-XdSvcjgjLvMqr1OAWM03kHAmG2C7HJEDazeP_24_T9dpc1IHf4_ybEwvEvypdd_SyCnCWWIc8dPAafgFcboA2iPkfE2zacrxCSdnjc5fLnfrWCcxleIby7J1zV8H0yEFxlhpTuht2IrV9iVbVVtS1G21WroeNNoeeYbUfYKJaqqULVqqqLAc9liLVem4wWvi6psy03RlMW63pwrLHgjqgI3ja5ZVeAojV1bex3XPlxWJsaMXSkagrDyjDbOzwTnxHS2Umnq51XoyOnpnC-RVYU1McWPMMkki91y6YNx8zshgzxbhBe6EtX7ezJmm8xkEbQZ0ZGg0kLM56iCmT7eg1UOthtSmiITdOQZP15MGvJ5rfzI-JGgl8_TFPxPVIlagghHxo9LRteO_xkAAP__G9UFow">