http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57531
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c |c++ Severity|major |normal --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think the problem is the comma operator causes it to be a rvalue. In that ((void)0, x) is considered rvalue rather than what you want as a lvalue. Note C does not have ?: as lvalues so this cannot apply to C; only C++.