#include <iostream>
int avar = 10;
namespace Some
{
int avar = 20;
namespace Thing
{
int avar = 30;
void Funky()
{
int a = avar; // a refers to the name inside Thing (Line 9), same as Some::Thing::avar
int b = Some::avar; // Some::avar refers to the name inside Some (Line 6)
int c = ::avar; // ::avar refers to the name in the global namespace (Line)
bool d = (10 == ::avar); // Compare the hard-coded value with the value of the global avar (true)
bool e = (avar == ::avar); // Compare local avar with the global avar (false)
bool f = (avar == Some::Thing::avar); // Compare local avar with itself (true)
std::cout << a << ", "<< b << ", " << c << ", " << d << ", " << e << ", " << f << std::endl; // 30,20,10,1,0,1
}
}
}
int main()
{
Some::Thing::Funky();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IGF2YXIgPSAxMDsKbmFtZXNwYWNlIFNvbWUKewogICAgaW50IGF2YXIgPSAyMDsKICAgIG5hbWVzcGFjZSBUaGluZwogICAgewogICAgICAgICAgIGludCBhdmFyID0gMzA7CiAgICAgICAgICAgdm9pZCBGdW5reSgpCiAgICAgICAgICAgewogICAgICAgICAgICAgIGludCBhID0gYXZhcjsgLy8gYSByZWZlcnMgdG8gdGhlIG5hbWUgaW5zaWRlIFRoaW5nIChMaW5lIDkpLCBzYW1lIGFzIFNvbWU6OlRoaW5nOjphdmFyCiAgICAgICAgICAgICAgaW50IGIgPSBTb21lOjphdmFyOyAvLyBTb21lOjphdmFyIHJlZmVycyB0byB0aGUgbmFtZSBpbnNpZGUgU29tZSAoTGluZSA2KQogICAgICAgICAgICAgIGludCBjID0gOjphdmFyOyAvLyA6OmF2YXIgcmVmZXJzIHRvIHRoZSBuYW1lIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlIChMaW5lKQogICAgICAgICAgICAgIGJvb2wgZCA9ICgxMCA9PSA6OmF2YXIpOyAvLyBDb21wYXJlIHRoZSBoYXJkLWNvZGVkIHZhbHVlIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBnbG9iYWwgYXZhciAodHJ1ZSkKICAgICAgICAgICAgICBib29sIGUgPSAoYXZhciA9PSA6OmF2YXIpOyAvLyBDb21wYXJlIGxvY2FsIGF2YXIgd2l0aCB0aGUgZ2xvYmFsIGF2YXIgKGZhbHNlKQogICAgICAgICAgICAgIGJvb2wgZiA9IChhdmFyID09IFNvbWU6OlRoaW5nOjphdmFyKTsgLy8gQ29tcGFyZSBsb2NhbCBhdmFyIHdpdGggaXRzZWxmICh0cnVlKQoKICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgYSA8PCAiLCAiPDwgYiA8PCAiLCAiIDw8IGMgPDwgIiwgIiA8PCBkIDw8ICIsICIgPDwgZSA8PCAiLCAiIDw8IGYgPDwgc3RkOjplbmRsOyAvLyAzMCwyMCwxMCwxLDAsMQogICAgICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpIAp7CiAgICBTb21lOjpUaGluZzo6RnVua3koKTsKfQ==