// Build don't link:
// Origin: Mark Mitchell <mark@codesourcery.com>

template <class T>
struct B 
{
  virtual void f() = 0;
};

template <class T>
struct D : public B<T> {
  virtual void f();
};

void g() {
  B<int>* bi = new D<int>;
};

template <class T>
void B<T>::f() {}

