Posts for 2015 March
Scope ending in C++
Post by Nico Brailovsky @ 2015-03-31 | Permalink | 2 comments | Leave a comment
Is the following code valid C++?
const int x = 42;
void f() {
int x[x];
x[24] = 0;
}
Unfortunately, it is. According to 3.3.2 in the standard, a definition is available in a child scope up to the point where it's shadowed, and that means "x" will first be interpreted as the global const int, being an index for a vector named "x". Any new references to "x" will point to the new declaration.
Fun stuff, right?