1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li
3*67e74705SXin Li // Don't crash.
4*67e74705SXin Li
5*67e74705SXin Li template<typename,typename=int,typename=int>struct basic_string;
6*67e74705SXin Li
7*67e74705SXin Li typedef basic_string<char> string;
8*67e74705SXin Li
9*67e74705SXin Li
10*67e74705SXin Li
11*67e74705SXin Li template<typename aT,typename,typename oc>
12*67e74705SXin Li struct basic_string
13*67e74705SXin Li {
14*67e74705SXin Li int us;
15*67e74705SXin Li basic_string(const aT*,const oc&a=int());
16*67e74705SXin Li
17*67e74705SXin Li int _S_construct();
18*67e74705SXin Li
19*67e74705SXin Li int _S_construct(int);
20*67e74705SXin Li
21*67e74705SXin Li _S_construct(); // expected-error {{requires}}
22*67e74705SXin Li };
23*67e74705SXin Li
24*67e74705SXin Li template<typename _CharT,typename _Traits,typename _Alloc>
basic_string(const _CharT * c,const _Alloc &)25*67e74705SXin Li basic_string<_CharT,_Traits,_Alloc>::basic_string(const _CharT* c,const _Alloc&)
26*67e74705SXin Li :us(_S_construct)
27*67e74705SXin Li {string a(c);}
28*67e74705SXin Li
29*67e74705SXin Li struct runtime_error{runtime_error(string);};
30*67e74705SXin Li
31*67e74705SXin Li struct system_error:runtime_error{ // expected-note {{to match}}
32*67e74705SXin Li system_error():time_error("" // expected-error 3 {{expected}} expected-note {{to match}}
33