1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 template<typename T
> struct A
{ };
5 template<typename T
> A
<T
> f0(T
*);
7 void test_f0(int *ip
, float const *cfp
) {
9 A
<const float> a1
= f0(cfp
);
12 template<typename T
> void f1(T
*, int);
14 void test_f1(int *ip
, float fv
) {
18 template<typename T
> void f2(T
*, T
*); // expected-note {{candidate template ignored: could not match 'T *' against 'ConvToIntPtr'}} \
19 // expected-note{{candidate template ignored: deduced conflicting types for parameter 'T' ('int' vs. 'float')}}
22 operator int*() const;
25 void test_f2(int *ip
, float *fp
) {
26 f2(ip
, ConvToIntPtr()); // expected-error{{no matching function}}
28 f2(ip
, fp
); // expected-error{{no matching function}}
41 void func(bar
<T
>) { // expected-note {{candidate template ignored: could not match 'bar' against 'foo'}}
45 func(foo
<int>()); // expected-error {{no matching function}}