据我所知,这是有效的C99 - 这是通过复合文字.
C99标准以此为例(§6.5.2.5/ 9):
示例1文件范围定义
int *p = (int []){2, 4};
Run Code Online (Sandbox Code Playgroud)
初始化p指向两个整数数组的第一个元素,第一个元素的值为2,第二个元素的值为4.此复合文字中的表达式必须是常量.未命名的对象具有静态存储持续时间.
请注意,这里的(int [])东西不是演员.
这不是一个有效的C++构造,复合文字不是C++标准的一部分(包括C++ 11).一些编译器允许它作为扩展.(GCC确实如此,通过它-Wall -pedantic来获取有关它的诊断信息.IBM xlC也允许它作为扩展.)