// Testcase for use of template parms as types for other template parms.

template <class T, T t>
class A {
    T	a;
public:
    A(): a(t) {}

    operator T () { return a; }
};

template <class S, S s>
class B {
    A<S,s> a;
public:
    B(A<S,s>& b): a(b) {}

    operator S () { return a*20; }
};

main()
{
    A<int, 5> a;
    B<int, 5> b(a);

    if (b * a == 500)
      return 0;
    else
      return 1;
}
