| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| template<typename T> |
| struct X1 { |
| friend void f6(int) { } // expected-error{{redefinition of}} \ |
| // expected-note{{previous definition}} |
| }; |
| |
| X1<int> x1a; |
| X1<float> x1b; // expected-note {{in instantiation of}} |
| |
| template<typename T> |
| struct X2 { |
| operator int(); |
| |
| friend void f(int x) { } // expected-error{{redefinition}} \ |
| // expected-note{{previous definition}} |
| }; |
| |
| int array0[sizeof(X2<int>)]; |
| int array1[sizeof(X2<float>)]; // expected-note{{instantiation of}} |
| |
| void g() { |
| X2<int> xi; |
| f(xi); |
| X2<float> xf; |
| f(xf); |
| } |
| |
| template<typename T> |
| struct X3 { |
| operator int(); |
| |
| friend void h(int x); |
| }; |
| |
| int array2[sizeof(X3<int>)]; |
| int array3[sizeof(X3<float>)]; |
| |
| void i() { |
| X3<int> xi; |
| h(xi); |
| X3<float> xf; |
| h(xf); |
| } |