Extended Description
This causes an infinite loop:
int main() {auto* x = &main; x();}
[basic.start.main]/3 states:
"The function main shall not be used within a program."
I can even do things like
int x = 0; int main() {auto* f = &main; if (++x == 0) f();}
which run correctly.
gcc rejects taking the address of main.