On Fri, Mar 05, 2010 at 12:06:01PM -0800, Joe Buck wrote: > On Fri, Mar 05, 2010 at 11:38:23AM -0800, Magnus Fromreide wrote: > > Hello. > > > > I tried to do > > > > for (;; ({ break; })) > > printf("Hello\n"); > > > > and got an error message: > > > > error: break statement not within loop or switch > > But it only got through the parser, so that this error message > could be generated, because you're using a GNU extension: statements > and declarations in expressions. That is, ({ break;}) is a GNU > extension.
I am aware of that. > > when compiling it as C. Given that 9899:1999 ยง6.8.6.3 says that a break > > ... > > importance here. > > But in standard ISO C++, ({ break;}) is not a valid expression. Agreed. > Ideally a GNU extension should be specified as well as the rest of the > standard is specified, but I'm not surprised that this doesn't work. So you would say this points to a buglet in the specification of statement expressions? Or is it a bug in the C++ implementation, but one that is unimportant as it is impossible to detect using standard C++? /MF