The battle between strict type declarations vs coercive has been here for a while. My problem with coercion in detriment of strictness is that sometimes you DON'T WANT TYPE CASTING AT ALL. This new feature would create serious impediments. So I wonder if we couldn't have both (strict and coercive types declarations) and leave the current proposed type hinting syntax reserved for strict type declarations? Like in:
function(int $a, (int) $b) { // $a will be strict // $b will be type casted } This way we can actually choose when to cast and when to be strict and both features could be voted independently without affect each other possible future adoptions.