xref: /minix3/external/bsd/llvm/dist/clang/test/Sema/template-specialization.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -verify -fsyntax-only %s
2*f4a2713aSLionel Sambuc // Verify the absence of assertion failures when solving calls to unresolved
3*f4a2713aSLionel Sambuc // template member functions.
4*f4a2713aSLionel Sambuc 
5*f4a2713aSLionel Sambuc struct A {
6*f4a2713aSLionel Sambuc   template <typename T>
barA7*f4a2713aSLionel Sambuc   static void bar(int) { } // expected-note {{candidate template ignored: couldn't infer template argument 'T'}}
8*f4a2713aSLionel Sambuc };
9*f4a2713aSLionel Sambuc 
10*f4a2713aSLionel Sambuc struct B {
11*f4a2713aSLionel Sambuc   template <int i>
fooB12*f4a2713aSLionel Sambuc   static void foo() {
13*f4a2713aSLionel Sambuc     int array[i];
14*f4a2713aSLionel Sambuc     A::template bar(array[0]); // expected-error {{no matching function for call to 'bar'}}
15*f4a2713aSLionel Sambuc   }
16*f4a2713aSLionel Sambuc };
17*f4a2713aSLionel Sambuc 
main()18*f4a2713aSLionel Sambuc int main() {
19*f4a2713aSLionel Sambuc   B::foo<4>(); // expected-note {{in instantiation of function template specialization 'B::foo<4>'}}
20*f4a2713aSLionel Sambuc   return 0;
21*f4a2713aSLionel Sambuc }
22