1 // Origin: PR c++/43206
2 // { dg-do compile }
3 
4 template<class A> struct NumericTraits{ typedef A TInputImage;};
5 template<class B> class CovariantVector{};
6 template<class C> struct Image{ typedef C PixelType;};
7 template<class H, class E, class D>
8 class F {
9   typedef H G;
10   typedef
11   typename NumericTraits<typename G::PixelType>::RealType
12   InputRealType;
13 };
14 
15 template<typename TInputImage,
16          typename TOutputImage=Image<CovariantVector<typename NumericTraits<typename TInputImage::PixelType>::TInputImage> > >
17 class XXX{};
18 
19 XXX<Image<float> > x;
20 
21