The C++ standard says this about the void parameter list:
"The parameter list (void) is equivalent to the empty parameter list."
(8.3.5 [dcl.fct] paragraph 2)
The C99 standard apparently says something slightly different, though I'm afraid I'm quoting from a draft here:
"The special case of an unnamed parameter of type void as the only item in the list specifies that the function has no parameters."
(188.8.131.52 paragraph 10)
If I understand these correctly, this means a C compiler must take type aliases into account before checking for the special case whereas a C++ compiler must not.
The development version of g++ follows the C++ standard in this respect, whereas older versions of g++ follow the C standard. During testing of the new version in Debian, we found that this change broke a C++ program that uses the OpenAL library, one of whose headers used a type alias for void in a function parameter list; see http://bugs.debian.org/361707
Given that this special case only exists in C++ for compatibility with C, it seems to be a defect in the standard that it is defined slightly differently, and accordingly I have submitted a defect report. I think g++ should not be changed to follow the C++ standard in this respect until this has been resolved by the C++ standard committee.
This was an undocumented extension. Hint the word is really a bug and not an extension.
Maybe something should go to changes.html but that is not really an issue.
*** This bug has been marked as a duplicate of 9278 ***
was the Defect report for the C++ standard already.
One more thing is that filing a bug report is not the correct approach to filing a defect report with the standard since there was already a defect which was closed as NAD (not a defect).