// Common tools for the exception tests. #include // Echo when a destructor is run and an area/block is left. struct loud_exit { const char * area; }; inline void ?{}(loud_exit & this, const char * area) { this.area = area; } inline void ^?{}(loud_exit & this) { printf("Exiting: %s\n", this.area); } struct loud_region { const char * region; }; inline void ?{}(loud_region & this, const char * region) { this.region = region; printf("Entering: %s\n", region); } inline void ^?{}(loud_region & this) { printf("Exiting: %s\n", this.region); }