// RUN: %clang_cc1 -fsyntax-only -verify %s template struct A { template A operator+(U); }; template bool operator==(A, A); template<> bool operator==<0>(A, A); bool test_qualified_id(A ai) { return ::operator==<0, int>(ai, ai); } void test_op(A a, int i) { const A &air = a.operator+(i); } template void test_op_template(A at, T x) { const A &atr = at.template operator+(x); const A &atr2 = at.A::template operator+(x); // FIXME: unrelated template-name instantiation issue // const A &atr3 = at.template A::template operator+(x); } template void test_op_template(A, float);