// { dg-do compile } // Contributed by Martin Loewis // PR c++/8856: Make sure template conversion operators are not parsed as // template names. struct K {}; template struct K2 {}; template struct A { template operator U() { return U(); } }; int main() { A a; (void)a.operator int(); (void)a.operator double(); (void)a.operator K2(); (void)a.A::operator int(); (void)a.A::operator double(); (void)a.A::operator K2(); (void)a.operator double(); // { dg-error "not a template" } (void)a.operator K(); // { dg-error "not a template" } (void)a.A::operator double(); // { dg-error "not a template" } (void)a.A::operator K(); // { dg-error "not a template" } }