1 | // RUN: %clang_cc1 -fsyntax-only %s -verify |
2 | // expected-no-diagnostics |
3 | |
4 | namespace rdar10544564 { |
5 | // Check that we don't attempt to use an overloaded operator& when |
6 | // naming a pointer-to-member. |
7 | struct X { |
8 | void** operator & (); |
9 | }; |
10 | |
11 | struct Y |
12 | { |
13 | public: |
14 | X member; |
15 | X memfunc1(); |
16 | X memfunc2(); |
17 | X memfunc2(int); |
18 | |
19 | void test() { |
20 | X Y::*data_mem_ptr = &Y::member; |
21 | X (Y::*func_mem_ptr1)() = &Y::memfunc1; |
22 | X (Y::*func_mem_ptr2)() = &Y::memfunc2; |
23 | } |
24 | }; |
25 | |
26 | X Y::*data_mem_ptr = &Y::member; |
27 | X (Y::*func_mem_ptr1)() = &Y::memfunc1; |
28 | X (Y::*func_mem_ptr2)() = &Y::memfunc2; |
29 | } |
30 | |