[EXT_EP-8712] Unimplemented core issue 1769: Catching a thrown derived class by reference to base clas Created: 06/Dec/17 Updated: 28/Jun/22 |
|
Status: | New |
Project: | Embedded Software & Tools |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Medium |
Reporter: | TI User | Assignee: | TI User |
Resolution: | Unresolved | Votes: | 0 |
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Product: | Code Generation Tools |
Internal ID: | CODEGEN-4072 |
Found In Release: | ARM_18.1.0.LTS MSP430_18.1.0.LTS C2000_22.6.0.LTS MSP430_20.2.0.LTS ARM_18.12.0.LTS MSP430_21.6.0.LTS C2000_21.6.0.LTS MSP430_18.12.0.LTS ARM_20.2.0.LTS |
Release Notes: | Core 1769, involving a resolution which states that derived classes can be thrown and caught by catch clauses denoting an unambiguous base, has not been implemented.
#include <assert.h> struct BaseClass { int i; BaseClass() : i(0) { } BaseClass(int ii) : i(ii) { } BaseClass(const BaseClass& r) : i(r.i) { } }; class DerivedClass : BaseClass { int ib; public: DerivedClass(const DerivedClass& r) : BaseClass(r.ib), ib(r.ib) { } DerivedClass(const BaseClass&) : BaseClass(999), ib(999) { } DerivedClass(int ii); }; DerivedClass thrown_base (1); DerivedClass::DerivedClass(int ii) : BaseClass(ii), ib(ii) { } int main() { try { throw thrown_base; return 999; } catch(const BaseClass &k) { } catch(...) { assert(false); } // Assertion fails at runtime due to core issue 1769 return 0; } |
Description |
Unimplemented core issue 1769: Catching a thrown derived class by reference to base clas |