1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// PR 12337 class A {}; template <typename T> class X : public A { public: X(T&); }; class B { public: bool foo(A*); template <typename T> bool foo(T& t) { return foo(new X<T>(t)); } }; int main() { B x, y; x.foo(y); }