#include <iostream>
using namespace std;
class Ptr {
public:
Ptr( int * p ) : m_ptr( p ) {}
operator bool() const {
std::cout << "bool" << std::endl;
return m_ptr != 0;
}
operator int*() {
std::cout << "pointer" << std::endl;
return m_ptr;
}
private:
int * m_ptr;
};
int main() {
Ptr p( 0 );
if ( p ) {
int * t = p;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUHRyIHsKcHVibGljOgoJUHRyKCBpbnQgKiBwICkgOiBtX3B0ciggcCApIHt9CiAgICBvcGVyYXRvciBib29sKCkgY29uc3QgewogICAgCXN0ZDo6Y291dCA8PCAiYm9vbCIgPDwgc3RkOjplbmRsOwogICAgCXJldHVybiBtX3B0ciAhPSAwOwogICAgfQogICAgb3BlcmF0b3IgaW50KigpIHsKICAgIAlzdGQ6OmNvdXQgPDwgInBvaW50ZXIiIDw8IHN0ZDo6ZW5kbDsKICAgIAlyZXR1cm4gbV9wdHI7CiAgICB9CnByaXZhdGU6CglpbnQgKiBtX3B0cjsKfTsKCgppbnQgbWFpbigpIHsKCglQdHIgcCggMCApOwoJaWYgKCBwICkgewoJCWludCAqIHQgPSBwOwoJfQoKCXJldHVybiAwOwp9