/* { dg-do compile } */

struct rgba8;
template<class ColorT> class span_gouraud     {
public:
    struct coord_type { };
    coord_type m_coord[3];
};
template<class ColorT> class span_gouraud_rgba : public span_gouraud<ColorT>   
{
  typedef ColorT color_type;
  typedef span_gouraud<color_type> base_type;
  typedef typename base_type::coord_type coord_type;
public:
  void prepare()         {
      coord_type coord[3];
  }
};
void the_application() {
    typedef span_gouraud_rgba<rgba8> gouraud_span_gen_type;
    gouraud_span_gen_type span_gouraud;
    span_gouraud.prepare();
}