1 // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 2 3 struct A {}; 4 struct E {}; 5 6 struct R { 7 operator A*(); 8 operator E*(); // expected-note{{candidate function}} 9 }; 10 11 12 struct S { 13 operator A*(); 14 operator E*(); // expected-note{{candidate function}} 15 }; 16 17 struct B : R { 18 operator A*(); 19 }; 20 21 struct C : B { 22 23 }; 24 25 void foo(C c, int A::* pmf) { 26 int i = c->*pmf; 27 } 28 29 struct B1 : R, S { 30 operator A*(); 31 }; 32 33 struct C1 : B1 { 34 35 }; 36 37 void foo1(C1 c1, int A::* pmf) { 38 int i = c1->*pmf; 39 c1->*pmf = 10; 40 } 41 42 void foo1(C1 c1, int E::* pmf) { 43 int i = c1->*pmf; // expected-error {{use of overloaded operator '->*' is ambiguous}} \ 44 // expected-note {{because of ambiguity in conversion of 'C1' to 'E *'}} \ 45 // expected-note 4 {{built-in candidate operator}} 46 } 47