1*c87b03e5Sespie // Build don't link: 2*c87b03e5Sespie // Special g++ Options: -fexceptions 3*c87b03e5Sespie // GROUPS passed exceptions 4*c87b03e5Sespie // except file 5*c87b03e5Sespie // Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com> 6*c87b03e5Sespie // From: willoch@ss670mp.oslo.sgp.slb.com (thorbjorn willoch) 7*c87b03e5Sespie // Subject: -fansi-exceptions bug 8*c87b03e5Sespie // Date: Mon, 30 Nov 92 11:18:05 GMT 9*c87b03e5Sespie 10*c87b03e5Sespie extern "C" int printf(const char *, ...); 11*c87b03e5Sespie 12*c87b03e5Sespie class Vector 13*c87b03e5Sespie { 14*c87b03e5Sespie int* p; 15*c87b03e5Sespie int sz; 16*c87b03e5Sespie public: Vector(int s)17*c87b03e5Sespie Vector(int s) { p = new int[sz=s]; } ~Vector()18*c87b03e5Sespie ~Vector() {delete [] p; } size()19*c87b03e5Sespie int size() {return sz; } 20*c87b03e5Sespie class Range{}; 21*c87b03e5Sespie 22*c87b03e5Sespie 23*c87b03e5Sespie int& operator[](int i); 24*c87b03e5Sespie }; 25*c87b03e5Sespie 26*c87b03e5Sespie int& Vector::operator[](int i) 27*c87b03e5Sespie { 28*c87b03e5Sespie if(0<=i && i<sz) return p[i]; 29*c87b03e5Sespie throw Range(); 30*c87b03e5Sespie } 31*c87b03e5Sespie do_something(Vector & v)32*c87b03e5Sespievoid do_something(Vector& v) 33*c87b03e5Sespie { 34*c87b03e5Sespie int i = v[v.size()+10]; 35*c87b03e5Sespie } 36*c87b03e5Sespie main()37*c87b03e5Sespiemain() 38*c87b03e5Sespie { 39*c87b03e5Sespie Vector v(10); 40*c87b03e5Sespie 41*c87b03e5Sespie try 42*c87b03e5Sespie { 43*c87b03e5Sespie do_something(v); 44*c87b03e5Sespie } 45*c87b03e5Sespie 46*c87b03e5Sespie catch (Vector::Range) 47*c87b03e5Sespie { 48*c87b03e5Sespie printf("Range error exception\n"); 49*c87b03e5Sespie } 50*c87b03e5Sespie } 51