Забавный вопрос об идентификаторах

1,00
р.
Малому в универе досталась задача — написать компилируемую программу, в которой должен использоваться как можно в больших ипостасях, так сказать, один и тот же идентификатор. Но именно разных, так что какое-нибудь вложенное
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>