19ca5c425SRichard Smith // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 2*c6e68daaSAndy Gibbs // expected-no-diagnostics 39a587b01SFariborz Jahanian 49a587b01SFariborz Jahanian // 13.3.3.2 Ranking implicit conversion sequences 59a587b01SFariborz Jahanian // conversion of A::* to B::* is better than conversion of A::* to C::*, 69a587b01SFariborz Jahanian struct A { 79a587b01SFariborz Jahanian int Ai; 89a587b01SFariborz Jahanian }; 99a587b01SFariborz Jahanian 109a587b01SFariborz Jahanian struct B : public A {}; 119a587b01SFariborz Jahanian struct C : public B {}; 129a587b01SFariborz Jahanian f(int C::*)139a587b01SFariborz Jahanianconst char * f(int C::*){ return ""; } f(int B::*)149a587b01SFariborz Jahanianint f(int B::*) { return 1; } 159a587b01SFariborz Jahanian 169a587b01SFariborz Jahanian struct D : public C {}; 179a587b01SFariborz Jahanian g(int B::*)189a587b01SFariborz Jahanianconst char * g(int B::*){ return ""; } g(int D::*)199a587b01SFariborz Jahanianint g(int D::*) { return 1; } 209a587b01SFariborz Jahanian test()219a587b01SFariborz Jahanianvoid test() 229a587b01SFariborz Jahanian { 239a587b01SFariborz Jahanian int i = f(&A::Ai); 249a587b01SFariborz Jahanian 259a587b01SFariborz Jahanian const char * str = g(&A::Ai); 269a587b01SFariborz Jahanian } 279a587b01SFariborz Jahanian 289a587b01SFariborz Jahanian // conversion of B::* to C::* is better than conversion of A::* to C::* 299a587b01SFariborz Jahanian typedef void (A::*pmfa)(); 309a587b01SFariborz Jahanian typedef void (B::*pmfb)(); 319a587b01SFariborz Jahanian typedef void (C::*pmfc)(); 329a587b01SFariborz Jahanian 339a587b01SFariborz Jahanian struct X { 349a587b01SFariborz Jahanian operator pmfa(); 359a587b01SFariborz Jahanian operator pmfb(); 369a587b01SFariborz Jahanian }; 379a587b01SFariborz Jahanian 389a587b01SFariborz Jahanian 399a587b01SFariborz Jahanian void g(pmfc); 409a587b01SFariborz Jahanian test2(X x)419a587b01SFariborz Jahanianvoid test2(X x) 429a587b01SFariborz Jahanian { 439a587b01SFariborz Jahanian g(x); 449a587b01SFariborz Jahanian } 459a587b01SFariborz Jahanian 46