#include <iostream>
#define PRINT(val) std::cout << val << std::endl
namespace sub {
int value = 1;
}
namespace b {
int alt = 3;
}
namespace a {
namespace b {
int value = 2;
void func() {
PRINT(value);
PRINT(sub::value);
}
}
void func() {
PRINT(b::value);
PRINT(sub::value);
//PRINT(b::alt); //no 'alt' in the closest 'b' namespace
}
}
int main() {
PRINT("a::func");
a::func();
PRINT("a::b::func");
a::b::func();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBQUklOVCh2YWwpIHN0ZDo6Y291dCA8PCB2YWwgPDwgc3RkOjplbmRsCm5hbWVzcGFjZSBzdWIgewoJaW50IHZhbHVlID0gMTsKfQpuYW1lc3BhY2UgYiB7CglpbnQgYWx0ID0gMzsKfQoKbmFtZXNwYWNlIGEgewogCW5hbWVzcGFjZSBiIHsKCQlpbnQgdmFsdWUgPSAyOwoJCQoJCXZvaWQgZnVuYygpIHsKCQkJUFJJTlQodmFsdWUpOwoJCQlQUklOVChzdWI6OnZhbHVlKTsKCQl9CiAJfQoJCgl2b2lkIGZ1bmMoKSB7CgkJUFJJTlQoYjo6dmFsdWUpOwoJCVBSSU5UKHN1Yjo6dmFsdWUpOwoJCS8vUFJJTlQoYjo6YWx0KTsgLy9ubyAnYWx0JyBpbiB0aGUgY2xvc2VzdCAnYicgbmFtZXNwYWNlCgl9Cn0KCmludCBtYWluKCkgewoJUFJJTlQoImE6OmZ1bmMiKTsKCWE6OmZ1bmMoKTsKCVBSSU5UKCJhOjpiOjpmdW5jIik7CglhOjpiOjpmdW5jKCk7Cn0K