1 // { dg-do compile }
2 // Origin: Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de>
3 
4 // PR c++/7348
5 // Access control for typename in function return type
6 
7 class Outer {
8     template <int dim> struct Inner {
9         typedef int T;
10         T foo ();
11     };
12   public:
13     Outer();
14 };
15 
16 template <int dim>
foo()17 typename Outer::Inner<dim>::T  Outer::Inner<dim>::foo () {
18   return 1;
19 }
20 
21 template struct Outer::Inner<2>;
22