// { dg-do compile }
// { dg-options "-fpermissive" }
typedef long unsigned int size_t;
       typedef bool _CORBA_Boolean;
         typedef unsigned int _CORBA_ULong;
             template <class T> class _CORBA_Sequence {
     public:   typedef _CORBA_Sequence<T> T_seq;
        inline T_seq &operator= (const T_seq &s)   {
         for (unsigned long i=0;
     i < pd_len;
     i++) {
       }
       }
       _CORBA_ULong pd_len;
     };
             template <class T> class _CORBA_Unbounded_Sequence : public _CORBA_Sequence<T> {
        inline _CORBA_Unbounded_Sequence_WChar() { // { dg-warning "forbids declaration" }
       }
     };
       class _CORBA_ObjRef_Var_base {
     };
         template <class T, class T_Helper> class _CORBA_ObjRef_Var : public _CORBA_ObjRef_Var_base {
     public:   typedef T* ptr_t;
       typedef T* T_ptr;
        inline _CORBA_ObjRef_Var() : pd_objref(T_Helper::_nil()) {
    }
       inline _CORBA_ObjRef_Var(T_ptr p) : pd_objref(p) {
       }
      private:   T_ptr pd_objref;
      };
        class omniLocalIdentity;
         class omniObjRef {
     };
            class omniServant {
      public:   virtual ~omniServant();
        virtual void* _ptrToInterface(const char* repoId);
          };
         namespace CORBA  {
      class NVList {
     };
      class Object {
     };
      struct StructMember {
     };
      class StructMemberSeq : public _CORBA_Unbounded_Sequence< StructMember > {
        };
      class _objref_IRObject :   public virtual ::CORBA::Object,   public virtual omniObjRef {
     };
      class _impl_IRObject :   public virtual omniServant {
      };
     class _objref_Container;
      typedef _objref_Container* Container_ptr;
      class _impl_Contained :   public virtual _impl_IRObject {
     };
     class _objref_ExceptionDef;
      typedef _objref_ExceptionDef* ExceptionDef_ptr;
      class ExceptionDef_Helper {
     public:   typedef ExceptionDef_ptr _ptr_type;
        static _ptr_type _nil();
     };
      typedef _CORBA_ObjRef_Var<_objref_ExceptionDef, ExceptionDef_Helper> ExceptionDef_var;
      class Container {
     public:    typedef Container_ptr _ptr_type;
        static const char* _PD_repoId;
       };
      class _objref_Container :   public virtual _objref_IRObject {
       ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members);
     };
      class _impl_Container :   public virtual _impl_IRObject {
     public:   virtual ~_impl_Container();
       virtual ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) = 0;
     };
      class _impl_IDLType :   public virtual _impl_IRObject {
     };
      class _impl_TypedefDef :   public virtual _impl_Contained,   public virtual _impl_IDLType {
     };
      class _impl_StructDef :   public virtual _impl_TypedefDef,   public virtual _impl_Container {
      };
           }
          namespace PortableServer {
            class ServantBase : public virtual omniServant {
    };
             }
         namespace POA_CORBA {
           class IRObject :   public virtual CORBA::_impl_IRObject,   public virtual ::PortableServer::ServantBase {
     };
      class Contained :   public virtual CORBA::_impl_Contained,   public virtual IRObject {
     };
      class Container :   public virtual CORBA::_impl_Container,   public virtual IRObject {
     };
      class IDLType :   public virtual CORBA::_impl_IDLType,   public virtual IRObject {
     };
      class TypedefDef :   public virtual CORBA::_impl_TypedefDef,   public virtual Contained,     public virtual IDLType {
     };
      class StructDef :   public virtual CORBA::_impl_StructDef,   public virtual TypedefDef,     public virtual Container {
     public:   virtual ~StructDef();
     };
       }
         namespace omni {
     class omniOrbPOA;
     class giopAddress;
     }
             class omniCallDescriptor {
     public:   typedef void (*LocalCallFn)(omniCallDescriptor*, omniServant*);
        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) {
    }
      private:   LocalCallFn pd_localCall;
       const char* pd_op;
       size_t pd_oplen;
       const char*const* pd_user_excns;
       int pd_n_user_excns;
       _CORBA_Boolean pd_is_oneway;
       _CORBA_Boolean pd_is_upcall;
       _CORBA_Boolean pd_contains_values;
        const omni::giopAddress* pd_first_address_used;
       const omni::giopAddress* pd_current_address;
           omniObjRef* pd_objref;
        omni::omniOrbPOA* pd_poa;
       omniLocalIdentity* pd_localId;
              unsigned long pd_deadline_secs;
       unsigned long pd_deadline_nanosecs;
      };
          class _0RL_cd_7963219a43724a61_f2000000   : public omniCallDescriptor {
     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)   {
        }
         static const char* const _user_exns[];
       const char* arg_0;
       const char* arg_1;
       const char* arg_2;
       const CORBA::StructMemberSeq* arg_3;
       CORBA::ExceptionDef_var result;
     };
          static void _0RL_lcfn_7963219a43724a61_03000000(omniCallDescriptor* cd, omniServant* svnt) {
       _0RL_cd_7963219a43724a61_f2000000* tcd = (_0RL_cd_7963219a43724a61_f2000000*)cd;
       CORBA::_impl_Container* impl = (CORBA::_impl_Container*) svnt->_ptrToInterface(CORBA::Container::_PD_repoId);
       tcd->result = impl->create_exception(tcd->arg_0, tcd->arg_1, tcd->arg_2, *tcd->arg_3);
       }
         CORBA::ExceptionDef_ptr CORBA::_objref_Container::create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) {
       _0RL_cd_7963219a43724a61_f2000000 _call_desc(_0RL_lcfn_7963219a43724a61_03000000, "create_exception", 17);
       }
         POA_CORBA::StructDef::~StructDef() {
    }
