1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<iostream> using namespace std; struct ghost { ghost* operator&() const volatile { return 0; } ghost* pointer () { return this; } }; template<typename T> T* address_of (T &obj) { char *p = &(reinterpret_cast<char&>(const_cast<T&>(obj))); return reinterpret_cast<T*>(p); } int main() { ghost clyde; ghost* clydes_address = address_of(clyde); cout<<"clydes_address = "<<clydes_address<<" clyde.pointer() = "<<clyde.pointer()<<endl; } |
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgZ2hvc3QKewogIGdob3N0KiBvcGVyYXRvciYoKSBjb25zdCB2b2xhdGlsZSB7IHJldHVybiAwOyB9CiAgZ2hvc3QqIHBvaW50ZXIgKCkgeyByZXR1cm4gdGhpczsgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCogYWRkcmVzc19vZiAoVCAmb2JqKQp7CiAgY2hhciAqcCA9ICYocmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oY29uc3RfY2FzdDxUJj4ob2JqKSkpOwogIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihwKTsKfQoKaW50IG1haW4oKQp7CiAgZ2hvc3QgY2x5ZGU7CiAgZ2hvc3QqIGNseWRlc19hZGRyZXNzID0gYWRkcmVzc19vZihjbHlkZSk7CiAgY291dDw8ImNseWRlc19hZGRyZXNzID0gIjw8Y2x5ZGVzX2FkZHJlc3M8PCIgY2x5ZGUucG9pbnRlcigpID0gIjw8Y2x5ZGUucG9pbnRlcigpPDxlbmRsOwp9Cg==
-
upload with new input
-
result: Success time: 0s memory: 2724 kB returned value: 0
clydes_address = 0xbf91593f clyde.pointer() = 0xbf91593f


