// Build don't link: // Origin: Andreas Kloeckner template struct iterator_traits { typedef typename Iterator::iterator_category iterator_category; // ERROR - no type iterator_category }; template struct iterator { typedef Category iterator_category; }; template struct reverse_iterator : public iterator::iterator_category> { protected: Iterator current; }; class tag { }; template struct list { template struct list_iterator { }; reverse_iterator > rbegin() { return reverse_iterator > // ERROR - no type|instantiated here (list_iterator(Head->next())); } }; template class list; // ERROR - instantiated from here