1// { dg-do compile }
2// { dg-options "-fpermissive" }
3typedef long unsigned int size_t;
4       typedef bool _CORBA_Boolean;
5         typedef unsigned int _CORBA_ULong;
6             template <class T> class _CORBA_Sequence {
7     public:   typedef _CORBA_Sequence<T> T_seq;
8        inline T_seq &operator= (const T_seq &s)   {
9         for (unsigned long i=0;
10     i < pd_len;
11     i++) {
12       }
13       }
14       _CORBA_ULong pd_len;
15     };
16             template <class T> class _CORBA_Unbounded_Sequence : public _CORBA_Sequence<T> {
17        inline _CORBA_Unbounded_Sequence_WChar() { // { dg-warning "forbids declaration" }
18       }
19     };
20       class _CORBA_ObjRef_Var_base {
21     };
22         template <class T, class T_Helper> class _CORBA_ObjRef_Var : public _CORBA_ObjRef_Var_base {
23     public:   typedef T* ptr_t;
24       typedef T* T_ptr;
25        inline _CORBA_ObjRef_Var() : pd_objref(T_Helper::_nil()) {
26    }
27       inline _CORBA_ObjRef_Var(T_ptr p) : pd_objref(p) {
28       }
29      private:   T_ptr pd_objref;
30      };
31        class omniLocalIdentity;
32         class omniObjRef {
33     };
34            class omniServant {
35      public:   virtual ~omniServant();
36        virtual void* _ptrToInterface(const char* repoId);
37          };
38         namespace CORBA  {
39      class NVList {
40     };
41      class Object {
42     };
43      struct StructMember {
44     };
45      class StructMemberSeq : public _CORBA_Unbounded_Sequence< StructMember > {
46        };
47      class _objref_IRObject :   public virtual ::CORBA::Object,   public virtual omniObjRef {
48     };
49      class _impl_IRObject :   public virtual omniServant {
50      };
51     class _objref_Container;
52      typedef _objref_Container* Container_ptr;
53      class _impl_Contained :   public virtual _impl_IRObject {
54     };
55     class _objref_ExceptionDef;
56      typedef _objref_ExceptionDef* ExceptionDef_ptr;
57      class ExceptionDef_Helper {
58     public:   typedef ExceptionDef_ptr _ptr_type;
59        static _ptr_type _nil();
60     };
61      typedef _CORBA_ObjRef_Var<_objref_ExceptionDef, ExceptionDef_Helper> ExceptionDef_var;
62      class Container {
63     public:    typedef Container_ptr _ptr_type;
64        static const char* _PD_repoId;
65       };
66      class _objref_Container :   public virtual _objref_IRObject {
67       ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members);
68     };
69      class _impl_Container :   public virtual _impl_IRObject {
70     public:   virtual ~_impl_Container();
71       virtual ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) = 0;
72     };
73      class _impl_IDLType :   public virtual _impl_IRObject {
74     };
75      class _impl_TypedefDef :   public virtual _impl_Contained,   public virtual _impl_IDLType {
76     };
77      class _impl_StructDef :   public virtual _impl_TypedefDef,   public virtual _impl_Container {
78      };
79           }
80          namespace PortableServer {
81            class ServantBase : public virtual omniServant {
82    };
83             }
84         namespace POA_CORBA {
85           class IRObject :   public virtual CORBA::_impl_IRObject,   public virtual ::PortableServer::ServantBase {
86     };
87      class Contained :   public virtual CORBA::_impl_Contained,   public virtual IRObject {
88     };
89      class Container :   public virtual CORBA::_impl_Container,   public virtual IRObject {
90     };
91      class IDLType :   public virtual CORBA::_impl_IDLType,   public virtual IRObject {
92     };
93      class TypedefDef :   public virtual CORBA::_impl_TypedefDef,   public virtual Contained,     public virtual IDLType {
94     };
95      class StructDef :   public virtual CORBA::_impl_StructDef,   public virtual TypedefDef,     public virtual Container {
96     public:   virtual ~StructDef();
97     };
98       }
99         namespace omni {
100     class omniOrbPOA;
101     class giopAddress;
102     }
103             class omniCallDescriptor {
104     public:   typedef void (*LocalCallFn)(omniCallDescriptor*, omniServant*);
105        inline omniCallDescriptor(LocalCallFn lcfn, const char* op_,        int op_len_, _CORBA_Boolean oneway,        const char*const* user_excns_,        int n_user_excns_,                             _CORBA_Boolean is_upcall_)     : pd_localCall(lcfn),       pd_op(op_), pd_oplen(op_len_),       pd_user_excns(user_excns_),       pd_n_user_excns(n_user_excns_),       pd_is_oneway(oneway),       pd_is_upcall(is_upcall_),       pd_contains_values(0),       pd_first_address_used(0),       pd_current_address(0),       pd_objref(0),       pd_poa(0),       pd_localId(0),       pd_deadline_secs(0),       pd_deadline_nanosecs(0) {
106    }
107      private:   LocalCallFn pd_localCall;
108       const char* pd_op;
109       size_t pd_oplen;
110       const char*const* pd_user_excns;
111       int pd_n_user_excns;
112       _CORBA_Boolean pd_is_oneway;
113       _CORBA_Boolean pd_is_upcall;
114       _CORBA_Boolean pd_contains_values;
115        const omni::giopAddress* pd_first_address_used;
116       const omni::giopAddress* pd_current_address;
117           omniObjRef* pd_objref;
118        omni::omniOrbPOA* pd_poa;
119       omniLocalIdentity* pd_localId;
120              unsigned long pd_deadline_secs;
121       unsigned long pd_deadline_nanosecs;
122      };
123          class _0RL_cd_7963219a43724a61_f2000000   : public omniCallDescriptor {
124     public:   inline _0RL_cd_7963219a43724a61_f2000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):      omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)   {
125        }
126         static const char* const _user_exns[];
127       const char* arg_0;
128       const char* arg_1;
129       const char* arg_2;
130       const CORBA::StructMemberSeq* arg_3;
131       CORBA::ExceptionDef_var result;
132     };
133          static void _0RL_lcfn_7963219a43724a61_03000000(omniCallDescriptor* cd, omniServant* svnt) {
134       _0RL_cd_7963219a43724a61_f2000000* tcd = (_0RL_cd_7963219a43724a61_f2000000*)cd;
135       CORBA::_impl_Container* impl = (CORBA::_impl_Container*) svnt->_ptrToInterface(CORBA::Container::_PD_repoId);
136       tcd->result = impl->create_exception(tcd->arg_0, tcd->arg_1, tcd->arg_2, *tcd->arg_3);
137       }
138         CORBA::ExceptionDef_ptr CORBA::_objref_Container::create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) {
139       _0RL_cd_7963219a43724a61_f2000000 _call_desc(_0RL_lcfn_7963219a43724a61_03000000, "create_exception", 17);
140       }
141         POA_CORBA::StructDef::~StructDef() {
142    }
143