// { dg-do run  }
// Bug: g++ generates an error trying to generate the first foo<int>, when
// it should silently fail and go on to the next one.

template<class T, typename U> class A { };

template<class T> void
foo(const A<T,typename T::N>&);

template<typename T>
class B { };

template<typename T> void
foo(B<T> const &) { }

int
main(void)
{
  B<int> sa;

  foo<int> (sa);
}