Is this what some of you are asking for? bool a = true; // ok bool b = false; // ok bool c = 1; // error, no implicit conversion bool c = getInt(); // error? ok? int x = 42; if(x) { ... } // ok (doesn't this imply c = getInt() ok too? if(42) { ... } // ok