1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T> 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A { 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template<typename U> A<T> operator+(U); 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<int Value, typename T> bool operator==(A<T>, A<T>); 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> bool operator==<0>(A<int>, A<int>); 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaobool test_qualified_id(A<int> ai) { 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return ::operator==<0, int>(ai, ai); 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test_op(A<int> a, int i) { 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const A<int> &air = a.operator+<int>(i); 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T> 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test_op_template(A<T> at, T x) { 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const A<T> &atr = at.template operator+<T>(x); 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const A<T> &atr2 = at.A::template operator+<T>(x); 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao // FIXME: unrelated template-name instantiation issue 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao // const A<T> &atr3 = at.template A<T>::template operator+<T>(x); 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate void test_op_template<float>(A<float>, float); 29