1 // See http://llvm.org/bugs/show_bug.cgi?id=11468 2 #include <stdio.h> 3 #include <string> 4 5 class Action { 6 public: Action()7 Action() {} PrintString(const std::string & msg) const8 void PrintString(const std::string& msg) const { 9 fprintf(stderr, "%s\n", msg.c_str()); 10 } Throw(const char & arg) const11 void Throw(const char& arg) const { 12 PrintString("PrintString called!"); // this line is important 13 throw arg; 14 } 15 }; 16 main()17int main() { 18 const Action a; 19 fprintf(stderr, "&a before = %p\n", &a); 20 try { 21 a.Throw('c'); 22 } catch(const char&) { 23 fprintf(stderr, "&a in catch = %p\n", &a); 24 } 25 fprintf(stderr, "&a final = %p\n", &a); 26 return 0; 27 } 28