1// { dg-do run } 2// Testcase for use of template parms as types for other template parms. 3 4template <class T, T t> 5class A { 6 T a; 7public: 8 A(): a(t) {} 9 10 operator T () { return a; } 11}; 12 13template <class S, S s> 14class B { 15 A<S,s> a; 16public: 17 B(A<S,s>& b): a(b) {} 18 19 operator S () { return a*20; } 20}; 21 22int 23main() 24{ 25 A<int, 5> a; 26 B<int, 5> b(a); 27 28 if (b * a == 500) 29 return 0; 30 else 31 return 1; 32} 33