------- Comment #5 from dj2con at gmail dot com 2009-07-03 15:29 -------
I was still curious, so I re-read section 6.7.5.3 of the standard. And having re-read it, I would like to apologize for troubling everyone -- upon re-reading 6.7.5.3, it now seems obvious that I was mis-applying the "right left rule". For anyone else who might pop across this exchange in the future, here is the explanation: A regular function prototype, for a function named "D", *must* be of the format: T D( parmlist ); If we replace the name "D" with a dereferenced function pointer "d", the prototype *must* still be of the same format; otherwise it will no longer be recognized as a function by the compiler. And if the prototype is no longer recognized as a function, it is not going to be parsed properly no matter how compliant it is with any other rules. Hence, "T (*d)( parmlist );" is valid, but "T d * ( parmlist )" is not because the compiler should not recognize that "d *" is a function. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40627