#define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
работает даже в Openwatcom. P.s. - не работает
P.p.s. работает -- __typeof. Не работает в других местах.

x=(class) { f1 : 0 , f2 : 0 } ; там же не работает вроде...

MS Visual C -- для хаканья области видимости x в for(int x=0;x<n;x++) ...??
#define for if (0); else for