#include <cstdio>
class A{
public:
void func( A* a ){
printf("0x%llx\n",(long long)a);
if( 0x8050000LL < (long long)a && (long long)a < 0xf000000000000000LL )
puts("new A()");
else
puts("&A");
}
};
A z;
int main(){
static A y;
A a;
a.func( new A() );
A b;
a.func( &b );
a.func( &y );
a.func( &z );
A *c = new A();
a.func( &*c ); // これはどっちが正解?
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KCmNsYXNzIEF7CiAgICBwdWJsaWM6CiAgICAgICAgdm9pZCBmdW5jKCBBKiBhICl7CiAgICAgICAgICAgIHByaW50ZigiMHglbGx4XG4iLChsb25nIGxvbmcpYSk7CiAgICAgICAgICAgIGlmKCAweDgwNTAwMDBMTCA8IChsb25nIGxvbmcpYSAmJiAobG9uZyBsb25nKWEgPCAweGYwMDAwMDAwMDAwMDAwMDBMTCApCiAgICAgICAgICAgICAgICBwdXRzKCJuZXcgQSgpIik7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHB1dHMoIiZBIik7CiAgICAgICAgfQp9OwoKQSB6OwppbnQgbWFpbigpewogICAgc3RhdGljIEEgeTsKICAgIEEgYTsKICAgIGEuZnVuYyggbmV3IEEoKSApOwogICAgQSBiOwogICAgYS5mdW5jKCAmYiApOwogICAgYS5mdW5jKCAmeSApOwogICAgYS5mdW5jKCAmeiApOwogICAgQSAqYyA9IG5ldyBBKCk7CiAgICBhLmZ1bmMoICYqYyApOyAvLyDjgZPjgozjga/jganjgaPjgaHjgYzmraPop6PvvJ8KICAgIHJldHVybiAwOwp9