blob: 052c19ef639d34dbbb490984cc4411cc42eedafb [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Douglas Gregorc15cb382009-02-09 23:23:08 +00002template<typename T,
3 int I,
4 template<typename> class TT>
Jeffrey Yasskinc173be22010-04-08 21:04:54 +00005 class A; // expected-note 3 {{template is declared here}}
Douglas Gregorc15cb382009-02-09 23:23:08 +00006
7template<typename> class X;
8
9A<int, 0, X> * a1;
10
Douglas Gregor39a8de12009-02-25 19:37:18 +000011A<float, 1, X, double> *a2; // expected-error{{too many template arguments for class template 'A'}}
12A<float, 1> *a3; // expected-error{{too few template arguments for class template 'A'}}
David Blaikie4b02dff2013-03-05 06:21:38 +000013A a3; // expected-error{{use of class template 'A' requires template arguments}}
John McCall9ba61662010-02-26 08:45:28 +000014
15namespace test0 {
16 template <class t> class foo {};
17 template <class t> class bar {
18 bar(::test0::foo<tee> *ptr) {} // FIXME(redundant): expected-error 2 {{use of undeclared identifier 'tee'}}
19 };
20}