// 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]; | |
} | |
} |