// { dg-do run } // Testcase for use of template parms as types for other template parms. template class A { T a; public: A(): a(t) {} operator T () { return a; } }; template class B { A a; public: B(A& b): a(b) {} operator S () { return a*20; } }; int main() { A a; B b(a); if (b * a == 500) return 0; else return 1; }