yes its possible. i like the third to because 1 makes it look more like a binary operator doing a calculation, 2 makes it look like foo is of type int& (well it technically is but i mean it looks like everything is of that type)
The reference is part of the type. So it belongs with the type. The fact that you can't do int& foo, bar and have it work as you'd expect is an error in the language as far as I'm concerned. But that doesn't matter that much because you shouldn't declare things like that very often (or at all?) anyway.