¿En qué versiones de C se usa un bloque entre paréntesis para devolver un valor válido?

Si lo hago:

int j = ({int x = 7; x+3;});

En i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) gcc compila perfectamente. El bloque en cuestion({int x = 7; x+3;}) devuelve el valor de la última instrucción como el valor del bloque. Si eliminas el paréntesis no se compila. ¿Puedo esperar que esto funcione en la mayoría de los compiladores de C?

Además, ¿cuál es el nombre de esta construcción? He tenido muchos problemas para buscarlo porque los motores de búsqueda no indexan() o{} y C es un término de búsqueda terrible. Tampoco he podido encontrar nada al respecto en ninguno de mis libros, probablemente porque no sé qué buscar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta