I think the program is ill-formed. I read the standard as requiring a real-floating type argument and given isnan is a macro no conversions apply.