| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++23 %s | |
| // expected-no-diagnostics | |
| namespace A { | |
| struct Foo { | |
| static int operator()(int a, int b) { return a + b; } | |
| static int operator[](int a, int b) { return a + b; } | |
| }; | |
| void ok() { | |
| // Should pass regardless of const / volatile | |
| Foo foo; | |
| foo(1, 2); | |
| foo[1, 2]; | |
| const Foo fooC; | |
| fooC(1, 2); | |
| fooC[1, 2]; | |
| const Foo fooV; | |
| fooV(1, 2); | |
| fooV[1, 2]; | |
| const volatile Foo fooCV; | |
| fooCV(1, 2); | |
| fooCV[1, 2]; | |
| } | |
| } |