here is a little c++ code, you may notice the char *ptr= false so a char * and a bool, with an implicit conversion... i dont get how it is possible. #include main() { char * ptr = false; std::cout << "value=" << (int)ptr << std::endl; return 0; }