brintos

brintos / llvm-project-archived public Read only

0
0
Text · 776 B · 85ed0aa Raw
46 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++112// expected-no-diagnostics3 4// 13.3.3.2 Ranking implicit conversion sequences5// conversion of A::* to B::* is better than conversion of A::* to C::*,6struct A {7int Ai;8}; 9 10struct B : public A {}; 11struct C : public B {}; 12 13const char * f(int C::*){ return ""; } 14int f(int B::*) { return 1; } 15 16struct D : public C {}; 17 18const char * g(int B::*){ return ""; } 19int g(int D::*) { return 1; } 20 21void test() 22{23  int i = f(&A::Ai);24 25  const char * str = g(&A::Ai);26}27 28// conversion of B::* to C::* is better than conversion of A::* to C::*29typedef void (A::*pmfa)();30typedef void (B::*pmfb)();31typedef void (C::*pmfc)();32 33struct X {34	operator pmfa();35	operator pmfb();36};37 38 39void g(pmfc);40 41void test2(X x) 42{43    g(x);44}45 46