// { dg-do compile } // Copyright (C) 2007 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 21 Jul 2007 template struct A { typedef const T X; struct B; }; template struct A::B { typedef volatile typename A::X Y; T const volatile *Foo (); }; template typename A::B::Y *A::B::Foo () { return 0; }