Помимо того, что упоминают другие ответы, также стоит упомянуть, что в C ++ 0x {}
инициализация не сужается. Таким образом, вместо предупреждения вы получите сообщение об ошибке, например
void f(int x)
{
// code
}
int main()
{
f({3.14}); // narrowing conversion of '3.14000000000000012434497875801753252744674682617e+0' from 'double' to 'int' inside { }
}
g ++ 4.4 и выше список инициализаторов поддержки (с опцией -std=c++0x
)