1// { dg-do assemble  }
2// GROUPS passed templates membertemplates
3template<int N, class T>
4struct B {
5};
6
7template<int N1, int N2, int N3>
8struct D {
9    struct E {
10        template<int N4, class T>
11        static void f(B<N4,T>)
12        { }
13    };
14};
15
16template<int N>
17struct A {
18    template<int N2, class T, int N3>
19    static void f(B<N2,T>, B<N3,T> b)
20    {
21        typedef typename D<N2,N3,N>::E E;
22	E::f(b);
23    }
24};
25
26void foo()
27{
28    A<5>::f(B<5,float>(),B<3,float>());
29}
30
31