C++0x is going to make the following code and similar code ill-formed, because it requires a so-called narrowing conversion of a double to a int<
double
int<
A practical instance that I have encountered:
float x = 4.2; // an input argument float a[2] = {x-0.5, x+0.5};
The numeric literal is implicitly double which causes promotion.