#include <iostream>
using namespace std;

class Ptr {
public:
	Ptr( int * p ) : m_ptr( p ) {}
    operator bool() {
    	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;
}