1// { dg-do compile }
2
3namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
4    template<typename _Tp>     class new_allocator     {
5    };
6}
7namespace std {
8    template<typename>     class allocator;
9    template<class _CharT>     struct char_traits;
10    template<typename _CharT, typename _Traits = char_traits<_CharT>,            typename _Alloc = allocator<_CharT> >     class basic_string;
11    typedef basic_string<char> string;
12    template<typename _Tp>     class allocator: public __gnu_cxx::new_allocator<_Tp>     {
13    };
14    template<typename _CharT, typename _Traits, typename _Alloc>     class basic_string     {
15    public:
16	basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
17    };
18}
19class UIException {
20};
21class PasswordDialog {
22    void run() throw (UIException);
23};
24class MessageBox  {
25public:
26    MessageBox (std::string t) throw (UIException);
27    virtual int run() throw (UIException) ;
28};
29extern "C" {
30    struct __jmp_buf_tag   {
31    };
32    extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) throw ();
33    typedef struct __jmp_buf_tag sigjmp_buf[1];
34}
35sigjmp_buf password_dialog_sig_jmp_buf;
36void PasswordDialog::run() throw (UIException)
37{
38  __sigsetjmp (password_dialog_sig_jmp_buf, 1);
39  MessageBox* errmsg = __null;
40  errmsg = new MessageBox ("E R R O R");
41  errmsg->run();
42}
43