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