int main() { Derived *d = new Derived(); d->Foo(); d->ParentFoo(); delete d; return 0; }
void Foo (Derived<void> &x) { x.Foo (); // { dg-message "required" "" } }
void Foo (Derived<char> &x) { x.Foo (); }
void Foo (Derived<void> &x) { x.Foo (); // { dg-error "instantiated" "" } }