// I hate this type of test case. I'm not sure how to code it better. // See the PR for what this tests. // prms-id: 7325 // execution test fails *-*-* int fail = 0; struct A { int i; static const A* match_this; static const A* match_arg; A(): i(7) { if (match_this) if (match_this != this) fail = 1; } A* get_this() { return this; } A& operator = (const A& o) { if (match_this) if (match_this != this) fail = 1; if (match_arg) if (match_arg != &o) fail = 1; match_arg = &o; } }; const A* A::match_this; const A* A::match_arg; A a; A foo() { return a; } void f () { A a; A::match_this = &a; a = foo (); a = foo (); A::match_this = 0; } void g () { A::match_this = A().get_this(); A(); A(); A::match_this = 0; } main() { f(); g(); return fail; }