30 lines
		
	
	
		
			626 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			626 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -fsyntax-only %s -verify 
 | 
						|
// expected-no-diagnostics
 | 
						|
 | 
						|
namespace rdar10544564 {
 | 
						|
  // Check that we don't attempt to use an overloaded operator& when
 | 
						|
  // naming a pointer-to-member.
 | 
						|
  struct X {
 | 
						|
    void** operator & ();
 | 
						|
  };
 | 
						|
 | 
						|
  struct Y
 | 
						|
  {
 | 
						|
  public:
 | 
						|
    X member;
 | 
						|
    X memfunc1();
 | 
						|
    X memfunc2();
 | 
						|
    X memfunc2(int);
 | 
						|
 | 
						|
    void test() {
 | 
						|
      X Y::*data_mem_ptr = &Y::member;
 | 
						|
      X (Y::*func_mem_ptr1)() = &Y::memfunc1;
 | 
						|
      X (Y::*func_mem_ptr2)() = &Y::memfunc2;
 | 
						|
    }
 | 
						|
  };
 | 
						|
  
 | 
						|
  X Y::*data_mem_ptr = &Y::member;
 | 
						|
  X (Y::*func_mem_ptr1)() = &Y::memfunc1;
 | 
						|
  X (Y::*func_mem_ptr2)() = &Y::memfunc2;
 | 
						|
}
 |