This is not possible. Inner local scopes completely shadow outer nesting scope names.
The best you can do is to make an alias before you shadow the outer name:
int max = 100;
int main() {
int max = 50;
{
int &m_max = max; // make reference alias first!
int max = 25;
printf("%d %d %d\n", max, m_max, ::max); // have to use alias name :(
}
}