In the second case you have a declaration. Declarations can contain declarations of multiple variables, separated by a comma.
What you're writing in the second case is equivalent to the following declaration
int x = 1, auto bi;
for (...) ...
And the reason that the first didn't work is not because of any size constraint, but because of the syntax of a range for
loop simply doesn't allow you to do something like that.