brintos

brintos / llvm-project-archived public Read only

0
0
Text · 644 B · 2b39e7d Raw
43 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited %s -o /dev/null2// PR 71043 4struct A {5  int Ai;6};7 8struct B : public A {};9struct C : public B {};10 11const char * f(int C::*){ return ""; }12int f(int B::*) { return 1; }13 14struct D : public C {};15 16const char * g(int B::*){ return ""; }17int g(int D::*) { return 1; }18 19void test()20{21  int i = f(&A::Ai);22 23  const char * str = g(&A::Ai);24}25 26// conversion of B::* to C::* is better than conversion of A::* to C::*27typedef void (A::*pmfa)();28typedef void (B::*pmfb)();29typedef void (C::*pmfc)();30 31struct X {32  operator pmfa();33  operator pmfb();34};35 36 37void g(pmfc);38 39void test2(X x)40{41  g(x);42}43