// { dg-do assemble } template struct S {}; template struct S : public S, S {}; template void f(S, S); // { dg-message "note" } void g() { S<0, 0, 0> s0; S<0, 1, 2> s2; f<0>(s0, s2); f(s0, s2); // { dg-error "" } no matching function // { dg-message "(candidate|deduced conflicting types|ambiguous base class)" "candidate note" { target *-*-* } 17 } }