134f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -verify %s
234f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
334f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis// Don't crash.
434f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
534f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidistemplate<typename,typename=int,typename=int>struct basic_string;
634f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
734f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidistypedef basic_string<char> string;
834f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
934f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
1034f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
1134f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidistemplate<typename aT,typename,typename oc>
1234f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisstruct basic_string
1334f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis{
1434f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisint us;
1534f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisbasic_string(const aT*,const oc&a=int());
1634f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
1734f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisint _S_construct();
1834f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
1934f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisint _S_construct(int);
2034f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
2134f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis_S_construct(); // expected-error {{requires}}
2234f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis};
2334f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
2434f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidistemplate<typename _CharT,typename _Traits,typename _Alloc>
2534f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidisbasic_string<_CharT,_Traits,_Alloc>::basic_string(const _CharT*,const _Alloc&)
2634f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis:us(_S_construct)
2734f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis{string a;}
2834f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
29e9ee382c32a83e9807a2fe4cfd52b5a11169a4b8Eli Friedmanstruct runtime_error{runtime_error(string);};
3034f52d14742914bbaa975ce7de45957cccf256bcArgyrios Kyrtzidis
31e9ee382c32a83e9807a2fe4cfd52b5a11169a4b8Eli Friedmanstruct system_error:runtime_error{ // expected-note {{to match}}
32e9ee382c32a83e9807a2fe4cfd52b5a11169a4b8Eli Friedmansystem_error():time_error("" // expected-error 3 {{expected}} expected-note {{to match}}
33