Как уже говорили несколько других, это расширение GCC, а не часть какого-либо стандарта. Вы получите предупреждение об этом, если будете использовать переключатель -pedantic
.
Точка этого расширения на самом деле не видна в этом случае, но представьте, что вместо этого
retval = foo() ?: desc.error;
С расширением foo()
вызывается только один раз. Без этого вам придется ввести временную переменную, чтобы избежать двойного вызова foo()
.