1 // RUN: clang-cc -emit-llvm %s -o -
2 template<typename T, typename U>
3 T* next(T* ptr, const U& diff);
4 
5 template<typename T, typename U>
6 T* next(T* ptr, const U& diff) {
7   return ptr + diff;
8 }
9 
10 void test(int *iptr, float *fptr, int diff) {
11   iptr = next(iptr, diff);
12   fptr = next(fptr, diff);
13 }
14 
15 template<typename T, typename U>
16 T* next(T* ptr, const U& diff);
17 
18 void test2(int *iptr, double *dptr, int diff) {
19   iptr = next(iptr, diff);
20   dptr = next(dptr, diff);
21 }