// Build don't link: template class List; template struct ListIterator { ListIterator (); ListIterator (const ListIterator& rhs); }; template struct List { void length () const { for (ListIterator li; li; ); // ERROR - used where a `bool' } }; void test(List& vals) { vals.length(); // ERROR - instantiated from here }