1 // { dg-do compile }
2 
3 // Copyright (C) 2007 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 21 Jul 2007 <nathan@codesourcery.com>
5 
6 template <typename T> struct A
7 {
8   typedef const T X;
9 
10   struct B;
11 };
12 
13 template <typename T> struct A<T>::B
14 {
15   typedef volatile typename A<T>::X Y;
16 
17   T const volatile *Foo ();
18 };
19 
20 template<typename T>
21 typename A<T>::B::Y *A<T>::B::Foo ()
22 {
23   return 0;
24 }
25