Этот мой ответ вызвал несколько комментариев, утверждающих, что следующая конструкция не является легальной в C/C++:
void f (int* a) ;
f ((int[]){1,2,3,4,0}) ;
(полную программу смотрите по ссылке this ideone link). Но мы не смогли решить этот вопрос. Может ли кто-нибудь пролить свет на это? Что говорят различные стандарты?