// { dg-do assemble } // Origin: Andreas Kloeckner template struct iterator_traits { typedef typename Iterator::iterator_category iterator_category; // { dg-error "" } no type iterator_category }; template struct iterator { typedef Category iterator_category; }; template struct reverse_iterator : public iterator::iterator_category> { // { dg-error "" } no type iterator_category protected: Iterator current; }; class tag { }; template struct list { template struct list_iterator { }; reverse_iterator > rbegin() { return reverse_iterator > (list_iterator(Head->next())); } // { dg-error "" } not declared }; template class list;