I believe that since C23 foo() is now a nullary function. As this is the last approved standard and it supersedes all previous standards, it is technically correct to say that de-jure this is what the (unqualified) C standard mandates.
Of course de-facto things are more nunanced.
C23 does not change anything in this situation, because we are talking about the definition of main(), not a forward declaration. More details here:
https://news.ycombinator.com/item?id=38729278#38732366