1 struct A {}; 2 struct B; 3 4 template <class TP> struct X: virtual A { XX5 template <class TP2> X(TP2* ptr) {} XX6 template <class TP2> X(const X<TP2>) {} 7 }; 8 9 struct Y : X<B> { YY10 Y(A* a) : X<B>(a) {} 11 }; 12 13 void func1(X<B>); 14 func2()15void func2() { 16 A a; 17 Y y(&a); 18 func1(X<A>(&a)); 19 } 20