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