1// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 2 3struct A {}; 4struct E {}; 5 6struct R { 7 operator A*(); 8 operator E*(); // expected-note{{candidate function}} 9}; 10 11 12struct S { 13 operator A*(); 14 operator E*(); // expected-note{{candidate function}} 15}; 16 17struct B : R { 18 operator A*(); 19}; 20 21struct C : B { 22 23}; 24 25void foo(C c, int A::* pmf) { 26 int i = c->*pmf; 27} 28 29struct B1 : R, S { 30 operator A*(); 31}; 32 33struct C1 : B1 { 34 35}; 36 37void foo1(C1 c1, int A::* pmf) { 38 int i = c1->*pmf; 39 c1->*pmf = 10; 40} 41 42void 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