1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate <int> int f(int);  // expected-note 2{{candidate}}
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate <signed char> int f(int); // expected-note 2{{candidate}}
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint i1 = f<1>(0); // expected-error{{ambiguous}}
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint i2 = f<1000>(0); // expected-error{{ambiguous}}
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace PR6707 {
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template<typename T, T Value>
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  struct X { };
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template<typename T, T Value>
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void f(X<T, Value>);
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void g(X<int, 10> x) {
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    f(x);
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  static const unsigned char ten = 10;
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template<typename T, T Value, typename U>
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void f2(X<T, Value>, X<U, Value>);
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void g2() {
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    f2(X<int, 10>(), X<char, ten>());
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
27