Малому в универе досталась задача — написать компилируемую программу, в которой должен использоваться как можно в больших ипостасях, так сказать, один и тот же идентификатор. Но именно разных, так что какое-нибудь вложенное namespace a { namespace a { namespace a { ничего нового по сравнению с одним пространством имен не дает. Поскольку малой уже сочинил и отправил namespace a { struct a { int a } int a() { struct a a {0} return a.a } } int main() { int a = a::a() std::cout << a } <br>считаю себя вправе задать эту задачку как вопрос — кто сможет добиться большего? :)
Ответ Плюс метка, плюс аргумент функции, плюс атрибут (и даже три разных атрибута, один из которых с аргументом (!) ), плюс определение препроцессора: #define a a namespace a { struct a { int a } int a(int a) { goto a a: if (a) { return a } else { struct a [[std::a, a::a(a), a]] a {0} return a.a } } } int main() { int a = a::a(0) std::cout << a return 0 } <br>