Note that I didn't said it was an abomination. I was only refering to the history of (void) when Doug McIlroy and Dennis Ritchie said that it was an abomination to Bjarne Stroustup, he first removed it from the language... But, later, the C interoperability problems it produced were too serious... And (void) was brought back into the language.
dcjr84:
IMHO, it would not be a good idea to remove it from C++0x, because it would have no benefit and would break much existing code and complicate interoperability with C: new headers would use more macros such as:
Code:
#ifdef __cplusplus
#define NO_ARG ()
#else
#define NO_ARG (void)
#endif
It would make headers harder to read, not easier.
I don't think that this special syntax has introduced bugs in non-aware programmers or that they've lost much time because of it.
dcjr84, language constructs are not removed from a language only because they're ugly useless or you don't like them... Otherwise, having a standard would be useless... Letting compiler vendors judging what they like and what they don't would work as well...
Backward compatibility and C interoperability are really very very important.
Such a huge modification (it is not a small modification such as removal of trigraphs, it's a modification which would affect probably more than ten percent of the existing C++ code base) would cost several billion dollars, perhaps more.
Benefits would be invisible.