Не соответствует текущему стандарту. Это будет возможно в C ++ 11
В gcc вы можете использовать приведение, чтобы вызвать создание временного, но это не стандарт c ++ (C99):
typedef int array[2];
void foo( array ) {} // Note: the actual signature is: void foo( int * )
int main() {
foo( (array){ 1, 2 } );
}