blob: 08ab0ca56fb6328e641aec0483dfd80a7fcf0e9c [file] [log] [blame]
Douglas Gregor72341032011-12-14 21:23:13 +00001// RUN: %clang_cc1 -fsyntax-only %s -verify
Andy Gibbsc6e68da2012-10-19 12:44:48 +00002// expected-no-diagnostics
Douglas Gregor72341032011-12-14 21:23:13 +00003
4namespace 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}