// { dg-do run  }
// PRMS Id: 2139
// Bug: g++ tries to instantiate the template with types on the function
// obstack and fails.

template<class T>
class X {
public:
    X(int) { }

    T x;
};

class A { };

int main()
{
    int i;
    X<int> xi(i);
    X<double> xd(i);
    
    X<int (*)(int, void *)> fp0(i);
    X<int (*)(int, char, double)> fp1(i);
    X<int (*)(int, double**, void *)> fp2(i);

    X<int (A::*)()> mp0 (i);
    X<int A::*> mp1 (i);
}
