1 // RUN: clang-cc -fsyntax-only -verify %s 2 3 template<typename T, int N = 2> struct X; // expected-note{{template is declared here}} 4 5 X<int, 1> *x1; 6 X<int> *x2; 7 8 X<> *x3; // expected-error{{too few template arguments for class template 'X'}} 9 10 template<typename U = float, int M> struct X; 11 12 X<> *x4; 13 14 template<typename T = int> struct Z { }; 15 template struct Z<>; 16 17 // PR4362 18 template<class T> struct a { }; 19 template<> struct a<int> { static const bool v = true; }; 20 21 template<class T, bool = a<T>::v> struct p { }; // expected-error {{no member named 'v'}} 22 23 template struct p<bool>; // expected-note {{in instantiation of default argument for 'p<bool>' required here}} 24 template struct p<int>; 25