xref: /llvm-project/clang/test/SemaTemplate/member-function-template.cpp (revision 5ed5ae476e5c7d26acf6ee1ccbcaa6b0487ceb1f)
1 // RUN: clang-cc -fsyntax-only -verify %s
2 
3 struct X {
4   template<typename T> T& f0(T);
5 
6   void g0(int i, double d) {
7     int &ir = f0(i);
8     double &dr = f0(d);
9   }
10 
11   template<typename T> T& f1(T);
12   template<typename T, typename U> U& f1(T, U);
13 
14   void g1(int i, double d) {
15     int &ir1 = f1(i);
16     int &ir2 = f1(d, i);
17     int &ir3 = f1(i, i);
18   }
19 };
20 
21 void test_X_f0(X x, int i, float f) {
22   int &ir = x.f0(i);
23   float &fr = x.f0(f);
24 }
25 
26 void test_X_f1(X x, int i, float f) {
27   int &ir1 = x.f1(i);
28   int &ir2 = x.f1(f, i);
29   int &ir3 = x.f1(i, i);
30 }
31