вторник, 27 июля 2010 г.

struct in for-loop

Не многие знают, и уж совсем почти никто не пользуется, возможностью объявлять в циклах переменные разных типов. Достигается это с помощью неименованной структуры, как показаны ниже:
for( struct {int i; long i2;} x = {1, 1}; x.i2 < mid; x.i++, x.i2 = x.i * x.i )
{
  std::cout << x.i2 << std::endl;
}
Пользователи компилятора от Microsoft, не пытайтесь повторить это дома — это не работает в MSVC++. Те кто пользовался VC6 помнят и другие косяки с переменными в циклах. Можно потренироваться в GNU C++ и в Comeau.

UPDATE (2015-12-22): В Visual Studio 2015 данная фича языка C++ также не поддерживается, но в этой версии MSVS можно выбрать Clang 3.7 в качестве компилятора и тогда сборка будет успешной.