// Build don't link:

template <class T> class List;
 
template <class T>
struct ListIterator
{
  ListIterator ();
  ListIterator (const ListIterator<T>& rhs);
};

template <class T>
struct List
{
  void length () const {
    for (ListIterator<T> li; li; ); // ERROR - used where a `bool'
  }
};

void test(List<int>& vals)
{
  vals.length();  // ERROR - instantiated from here
}
