xref: /llvm-project/clang/test/SemaCXX/cxx2b-static-operator.cpp (revision ee01a2c3996f9647f3158f5acdb921a6ede94dc1)
1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++23 %s
2 
3 // expected-no-diagnostics
4 
5 namespace A {
6 
7 struct Foo {
operator ()A::Foo8   static int operator()(int a, int b) { return a + b; }
operator []A::Foo9   static int operator[](int a, int b) { return a + b; }
10 };
11 
ok()12 void ok() {
13   // Should pass regardless of const / volatile
14   Foo foo;
15   foo(1, 2);
16   foo[1, 2];
17 
18   const Foo fooC;
19   fooC(1, 2);
20   fooC[1, 2];
21 
22   const Foo fooV;
23   fooV(1, 2);
24   fooV[1, 2];
25 
26   const volatile Foo fooCV;
27   fooCV(1, 2);
28   fooCV[1, 2];
29 }
30 
31 }
32