1 // { dg-do assemble  }
2 
3 template<int T>
4 struct A {
5   char *a;
AA6   A (const char* x)
7   {
8     a = (char*) x;
9   }
10 };
11 
12 template<int U, int V, class T>
13 struct B {
14   T a[V-U+1];
fB15   friend A<V-U+1> f (B const &x)
16   {
17     return A<V-U+1> ((char*) x.a);
18   }
19 };
20 
21 const int a = 8;
22 
23 typedef B<1,a,int> C;
24 struct D {
25   C x;
26 };
27