Não apenas as variáveis podem ser declaradas na parte init de um loop for, mas também classes e funções.
for(struct { int a; int b; } loop = { 1, 2 }; ..; ..)
{
...
}
Isso permite várias variáveis de tipos diferentes. Divertido, mas eu pessoalmente tentaria evitar fazer algo assim!